/*
 * Actions.java
 *
 * Created on 15 giugno 2005, 15.00
 *
 *
 */

package DataAccess;

import java.beans.*;
import java.io.Serializable;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import DataAccess.db2sql.*;
import Network.SendMail.*;

/**
 * @author andrea
 */
public class Actions extends Object implements Serializable {
    
    private String ConnectionString;
    private String DriverString;
    private HttpServletRequest url_richiesta;
    
    private PropertyChangeSupport propertySupport;
    
   public Actions() {
        propertySupport = new PropertyChangeSupport(this);
    }
    
   public void setConnectionString(String Connection_String) {
        ConnectionString = Connection_String;
    }
    
   public void setDriverString(String Driver_String) {
        DriverString = Driver_String;
    }
    
   public String getConnectionString() {
        return ConnectionString;
    }
   
   public String getDriverString() {
        return DriverString;
    }
   
   /**
    * 
    * @param req 
    * @return 
    */
   public String getAction(HttpServletRequest req) {
       
        url_richiesta = req;
       
        String html_output="";
        String azione=req.getParameter("action");
        
        if (azione == null) {
            azione = "";
        }
        // Ricerca per Citta'
        if (azione.compareTo("ricerca_comune") == 0) {
            if (req.getParameter("operazione") == null) {
                html_output= getFormRicercaCitta();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {
                        html_output = html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo, abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and citta.id_citta="+req.getParameter("id_citta"), "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
                    }
                
            }
                 
        // Ricerca per Tipologia
        } else if (azione.compareTo("ricerca_tipologia") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormRicercaTipologia();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {
                        html_output = html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo, abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and tipologie.id_tipologia="+req.getParameter("id_tipologia"), "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
                    }
                
            }
          
        // Ricerca per Categoria
        } else if (azione.compareTo("ricerca_categoria") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormRicercaCategoria();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {
                        html_output = html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo, abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, categorie.descrizione_categoria as `Categoria di abbonamento` from abbonati, citta, province, categorie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_categoria = categorie.id_categoria and categorie.id_categoria="+req.getParameter("id_categoria"), "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
                    }
                
            }   
            
            
            
         // Ricerca per Provincia
        } else if (azione.compareTo("ricerca_provincia") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormRicercaProvincia();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {
                        html_output = html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and province.id_provincia="+req.getParameter("id_provincia"), "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
                    }
                
            }
            
            
        // Ricerca per Regione
        } else if (azione.compareTo("ricerca_regione") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormRicercaRegione();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {
                        html_output = html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province,regioni, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia     and regioni.id_regione = province.id_regione       and abbonati.id_tipologia = tipologie.id_tipologia and regioni.id_regione="+req.getParameter("id_regione"), "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
                    }
                
            }
            
            
            
           
         // Ricerca Avanzata
        } else if (azione.compareTo("ricerca_avanzata") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormRicercaAvanzataAbbonato();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {
                                //html_output = html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and province.id_provincia="+req.getParameter("id_provincia"), "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");

                            String Id_stato = "";
                            if (req.getParameter("id_stato") != null) {
                                Id_stato = req.getParameter("id_stato");
                            }

                            
                            
                            String Id_regione = "";
                            if (req.getParameter("id_regione") != null) {
                                Id_regione = req.getParameter("id_regione");
                            }

                            String Id_provincia = "";
                            if (req.getParameter("id_provincia") != null) {
                                Id_provincia = req.getParameter("id_provincia");
                            }
                            
                            
                            String Id_citta = "";
                            if (req.getParameter("id_citta") != null) {
                                Id_citta = req.getParameter("id_citta");
                            }
                            
                            String Id_abbinamento = "";
                            if (req.getParameter("id_abbinamento") != null) {
                                Id_abbinamento = req.getParameter("id_abbinamento");
                            }
                            
                            html_output += RicercaAvanzataAbbonato(req.getParameter("id_tipologia"),req.getParameter("nominativo"), req.getParameter("riferimento"), req.getParameter("indirizzo"), req.getParameter("cap"),Id_stato, Id_regione, Id_provincia, Id_citta, req.getParameter("data_registrazione"), req.getParameter("data_decorrenza"), req.getParameter("data_scadenza"), req.getParameter("importo"), req.getParameter("id_categoria"), req.getParameter("da_numero"), req.getParameter("a_numero"), req.getParameter("telefono"), req.getParameter("cellulare"), req.getParameter("email"), req.getParameter("copie"), req.getParameter("rinnovo"), req.getParameter("abbinato"), req.getParameter("note"),Id_abbinamento );
                    }
                
            }
            
           
            
        /*
         * Report Scadenze per data
         *
         *
         */
        
        } else if (azione.compareTo("report_scadenze") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormRicercaScadenze();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {

                            html_output += RicercaScadenze (req.getParameter("da_giorno"),req.getParameter("a_giorno"),req.getParameter("id_tipologia"),req.getParameter("id_abbinamento"),req.getParameter("per_email"));
                    }
                
            }
            
         
            
         /*
         * Report Scadenze per numero
         *
         *
         */
        
        } else if (azione.compareTo("report_scadenze_numero") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormRicercaScadenzeNumero();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {

                            html_output += RicercaScadenzeNumero (req.getParameter("da_numero"),req.getParameter("a_numero"),req.getParameter("id_tipologia"),req.getParameter("id_abbinamento"),req.getParameter("per_email"));
                    }
                
            }   
            
            
            
            
            
            
             
         /*
         * Report Numeri Usciti
         *
         *
         */
        
        } else if (azione.compareTo("report_numeri_spediti_categoria") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormReportNumeriSpeditiCategoria();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {

                            html_output += ReportSpeditiCategoria (req.getParameter("da_giorno"),req.getParameter("a_giorno"));
                    }
                
            }
           
            
         } else if (azione.compareTo("report_numeri_spediti_tipologia") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormReportNumeriSpeditiTipologia();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {

                            html_output += ReportSpeditiTipologia (req.getParameter("da_giorno"),req.getParameter("a_giorno"));
                    }
                
            }
            
            
            
            
         /*
         * Report Nuovi Abbonamenti
         *
         *
         */
        
        } else if (azione.compareTo("report_abbonamenti") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormReportAbbonamenti();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {

                            html_output += ReportAbbonamenti (req.getParameter("da_giorno"),req.getParameter("a_giorno"),req.getParameter("id_tipologia"),req.getParameter("id_abbinamento"));
                    }
                
            }
            
            
            
            
         /*
         * Report Rinnovi
         *
         *
         */
        
        } else if (azione.compareTo("report_rinnovi") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormReportRinnovi();
            } else {
                        if (req.getParameter("operazione").compareTo("visualizza_risultati") == 0) {

                            html_output += ReportRinnovi (req.getParameter("da_giorno"),req.getParameter("a_giorno"),req.getParameter("id_tipologia"),req.getParameter("id_abbinamento"));
                    }
                
            }
            
            
            
            
            
           /*
         * Settaggi E-Mail
         *
         *
         */
        
        } else if (azione.compareTo("settaggi_email") == 0){
            if (req.getParameter("operazione") == null) {
                html_output= getFormSettaggiEmail();
            } else {
                        if (req.getParameter("operazione").compareTo("salva_settaggi") == 0) {
                            //String Id_citta = "";
                            //if (req.getParameter("id_citta") != null) {
                            //    Id_citta = req.getParameter("id_citta");
                            //}
                            //html_output += RicercaScadenze (req.getParameter("da_giorno"),req.getParameter("a_giorno"),req.getParameter("id_tipologia"),req.getParameter("abbinato"),req.getParameter("per_email"));
                            html_output = UpdateSettaggiEmail(req.getParameter("server"), req.getParameter("porta"), req.getParameter("mittente"));
                    }
                
            }
            
            
            
            
          // Report per Comune
         } else if (azione.compareTo("report_comune") == 0){
             //html_output += getStatistiche("select nome_citta as Comune,count(id_abbonato) as 'Numero Abbonamenti' from abbonati,citta where abbonati.id_citta = citta.id_citta and abbonati.id_categoria<>10000 group by nome_citta ORDER BY 'Numero Abbonamenti' DESC");
             html_output += getStatistiche("select nome_citta as Comune,count(id_abbonato) as 'Numero Abbonamenti' from abbonati,citta where abbonati.id_citta = citta.id_citta and abbonati.id_categoria<>10000 and abbonati.id_tipologia<>8 group by nome_citta ORDER BY 'Numero Abbonamenti' DESC");
            // Report per Provincia
         } else if (azione.compareTo("report_provincia") == 0){
            html_output += getStatistiche("select nome_provincia as Provincia,count(id_abbonato) as 'Numero Abbonamenti' from abbonati,province, citta where province.id_provincia = citta.id_provincia and abbonati.id_citta = citta.id_citta  and abbonati.id_categoria<>10000 and abbonati.id_tipologia<>8  group by nome_provincia ORDER BY 'Numero Abbonamenti' DESC ");
            // Report per Regione
         } else if (azione.compareTo("report_regione") == 0){
            html_output += getStatistiche("select nome_regione as Regione,count(id_abbonato) as 'Numero Abbonamenti' from abbonati,province, citta, regioni where province.id_provincia = citta.id_provincia and abbonati.id_citta = citta.id_citta  and province.id_regione=regioni.id_regione and abbonati.id_categoria<>10000 and abbonati.id_tipologia<>8  group by nome_regione ORDER BY 'Numero Abbonamenti' DESC");        
          // Report per Tipologia
         } else if (azione.compareTo("report_tipologia") == 0){
            html_output += getStatistiche("select descrizione_tipologia as Tipologia,count(id_abbonato) as 'Numero Abbonamenti' from abbonati,tipologie where abbonati.id_tipologia = tipologie.id_tipologia and abbonati.id_categoria<>10000 and abbonati.id_tipologia<>8  group by descrizione_tipologia ORDER BY 'Numero Abbonamenti' DESC ");
          // Report per Categoria
         } else if (azione.compareTo("report_categoria") == 0){
            html_output += getStatistiche("select descrizione_categoria as Categoria,count(id_abbonato) as 'Numero Abbonamenti' from abbonati,categorie where abbonati.id_categoria = categorie.id_categoria and abbonati.id_categoria<>10000 and abbonati.id_tipologia<>8  group by descrizione_categoria ORDER BY 'Numero Abbonamenti' DESC ");
         
            
            
            
         // Invio E-Mail
         } else if (azione.compareTo("invio_email") == 0){
            //html_output += getStatistiche("select nome_citta as Comune,count(id_abbonato) as 'Numero Abbonamenti' from abbonati,citta where abbonati.id_citta = citta.id_citta group by nome_citta ORDER BY 'Numero Abbonamenti' DESC LIMIT 0 , 10 ");
            html_output += InviaMailFromID(req.getParameterValues("lista_elementi"),req.getParameter("id_email"));
            //String Lista[] = req.getParameterValues("lista_elementi");
            //for(int counter = 0; counter < Lista.length; counter++) { 
            //    html_output += "<li>" + Lista[counter]; 
            //} 
            
            //html_output += req.getParameterValues("lista_elementi");
            
            
            
         /* Gestione Provincia
          * Inserimento, Modifica, Cancellazione
          */       
        //Inserimento Provincia
        } else if (azione.compareTo("inserimento_provincia") == 0){
            if (req.getParameter("sigla_provincia") == null ){
                html_output = getFormInserimentoProvincia();
            } else {
                html_output = InserimentoProvincia(req.getParameter("nome_provincia"),req.getParameter("sigla_provincia"),req.getParameter("id_regione") );
            }
            
        // Modifica Provincia
        }  else if (azione.compareTo("modifica_provincia") == 0){
            if (req.getParameter("id_provincia") == null ){
                html_output = getListaModificaProvincia();
            } else {
                //html_output = InserimentoProvincia(req.getParameter("nome_provincia"),req.getParameter("sigla_provincia"));
                if (req.getParameter("operazione").compareTo("elimina") == 0) {
                    html_output += EliminaProvincia(req.getParameter("id_provincia"));
                } else if (req.getParameter("operazione").compareTo("modifica") == 0) {
                    html_output += getFormModificaProvincia(req.getParameter("id_provincia"));
                } else if (req.getParameter("operazione").compareTo("salva_modifica") == 0) {
                    html_output += UpdateProvincia(req.getParameter("id_provincia"),req.getParameter("nome_provincia"),req.getParameter("sigla_provincia"),req.getParameter("id_regione"));
                }
            }
            
            
       
       /* Gestione Regioni
         * Inserimento, Modifica, Cancellazione
         *    
        */  
        // Inserimento nuova Regione
        }  else if (azione.compareTo("inserimento_regione") == 0) {
            
            
            if (req.getParameter("operazione") == null) {
                html_output += getFormInserimentoRegione();
            } else if (req.getParameter("operazione").compareTo("conferma_inserimento") == 0) {
                html_output += InserimentoRegione(req.getParameter("nome_regione"), req.getParameter("id_stato"));
            }
         // Modifica Abbonato   
        } else if (azione.compareTo("modifica_regione") == 0){
            if (req.getParameter("id_regione") == null ){
                html_output = getListaModificaRegione();
            } else {
                
                if (req.getParameter("operazione").compareTo("elimina") == 0) {
                    html_output += EliminaRegione(req.getParameter("id_regione"));
                } else if (req.getParameter("operazione").compareTo("modifica") == 0) {
                    html_output += getFormModificaRegione(req.getParameter("id_regione"));
                } else if (req.getParameter("operazione").compareTo("salva_modifica") == 0) {
                    html_output += UpdateRegione(req.getParameter("id_regione"),req.getParameter("nome_regione"),req.getParameter("id_stato"));
                }
            }
              
            

         /* Gestione Email
         * Inserimento, Modifica, Cancellazione
         *    
        */  
        // Inserimento nuova email
        }  else if (azione.compareTo("inserimento_email") == 0) {
            
            
            if (req.getParameter("operazione") == null) {
                html_output += getFormInserimentoEmail();
            } else if (req.getParameter("operazione").compareTo("conferma_inserimento") == 0) {
                html_output += InserimentoEmail(req.getParameter("subject"),req.getParameter("messaggio"));
            }
         // Modifica Email   
        } else if (azione.compareTo("modifica_email") == 0){
            if (req.getParameter("id_email") == null ){
                html_output = getListaModificaEmail();
            } else {
                if (req.getParameter("operazione").compareTo("elimina") == 0) {
                    html_output += EliminaEmail(req.getParameter("id_email"));
                } else if (req.getParameter("operazione").compareTo("modifica") == 0) {
                    html_output += getFormModificaEmail(req.getParameter("id_email"));
                } else if (req.getParameter("operazione").compareTo("salva_modifica") == 0) {
                    html_output += UpdateEmail(req.getParameter("id_email"),req.getParameter("subject"),req.getParameter("messaggio"));
                }
            }   
            
           
            
         /* Gestione Numeri
         * Inserimento, Modifica, Cancellazione
         *    
        */  
        // Inserimento nuovo numero
        }  else if (azione.compareTo("inserimento_numero") == 0) {
            
            
            if (req.getParameter("operazione") == null) {
               html_output += getFormInserimentoNumero();
            } else if (req.getParameter("operazione").compareTo("conferma_inserimento") == 0) {
                html_output += InserimentoNumero(req.getParameter("identificativo_numero"),req.getParameter("data_uscita"),req.getParameter("descrizione"));
            }
         // Visualizza/Cancella Numero
        } else if (azione.compareTo("modifica_numero") == 0){
            if (req.getParameter("id_numero") == null ){
                html_output = getListaNumeri();
            } else {
                if (req.getParameter("operazione").compareTo("elimina") == 0) {
                    html_output += EliminaNumero(req.getParameter("id_numero"));
                } else if (req.getParameter("operazione").compareTo("visualizza") == 0) {
                    //html_output += getFormModificaEmail(req.getParameter("id_email"));
                    
                    //html_output += getCheckListFromQuery("0","select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as Tipologia from abbonati, citta, province, tipologie, numeri_abbonati where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and numeri_abbonati.id_abbonato = abbonati.id_abbonato and numeri_abbonati.id_numero =" + req.getParameter("id_numero"), "ID");
                    html_output += getCheckListFromQuery("0","select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, abbonati.copie as Copie from abbonati, citta, province, tipologie, numeri_abbonati where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and numeri_abbonati.id_abbonato = abbonati.id_abbonato and numeri_abbonati.id_numero =" + req.getParameter("id_numero"), "ID");
                    //select abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, abbonati.copie as Copie from abbonati, citta, province, tipologie, numeri_abbonati where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and numeri_abbonati.id_abbonato = abbonati.id_abbonato and numeri_abbonati.id_numero =
                }
            }  
            
            
            
            
            
            
         /* Gestione Newsletter
         *    
        */  
        // Inserimento nuovo numero
        }  else if (azione.compareTo("invio_newsletter") == 0) {                     
            if (req.getParameter("operazione") == null) {
               html_output += getFormNewsletter();
            } else if (req.getParameter("operazione").compareTo("invia") == 0) {
             //   html_output += InviaNewsletter(req.getParameter("soggetto"),req.getParameter("messaggio"));
            }
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        /* Gestione Abbonati
         * Inserimento, Modifica, Cancellazione
         *    
        */  
        // Inserimento nuovo abbonato
        }  else if (azione.compareTo("inserimento_abbonato") == 0) {
            
            
            if (req.getParameter("operazione") == null) {
                html_output += getFormInserimentoAbbonato();
            } else if (req.getParameter("operazione").compareTo("conferma_inserimento") == 0) {
                //html_output += InserimentoAbbonato(req.getParameter("nome"),req.getParameter("cognome"), req.getParameter("indirizzo"), req.getParameter("cap"), req.getParameter("id_citta"), req.getParameter("id_tipologia"));
                html_output += InserimentoAbbonato(req.getParameter("id_tipologia"),req.getParameter("nominativo"), req.getParameter("riferimento"), req.getParameter("indirizzo"), req.getParameter("cap"), req.getParameter("id_citta"), req.getParameter("data_registrazione"), req.getParameter("data_decorrenza"), req.getParameter("data_scadenza"), req.getParameter("importo"), req.getParameter("id_categoria"), req.getParameter("da_numero"), req.getParameter("a_numero"), req.getParameter("telefono"), req.getParameter("cellulare"), req.getParameter("email"), req.getParameter("copie"), req.getParameter("rinnovo"), req.getParameter("abbinato"), req.getParameter("note"), req.getParameter("id_abbinamento"));
            }
         // Modifica Abbonato   
        } else if (azione.compareTo("modifica_abbonato") == 0){
            if (req.getParameter("id_abbonato") == null ){
                //html_output = getListaModificaAbbonato();
                html_output = getFormRicercaAvanzataAbbonato();
            } else {
                //html_output = InserimentoProvincia(req.getParameter("nome_provincia"),req.getParameter("sigla_provincia"));
                if (req.getParameter("operazione").compareTo("elimina") == 0) {
                    html_output += EliminaAbbonato(req.getParameter("id_abbonato"));
                } else if (req.getParameter("operazione").compareTo("modifica") == 0) {
                    html_output += getFormModificaAbbonato(req.getParameter("id_abbonato"));
                } else if (req.getParameter("operazione").compareTo("salva_modifica") == 0) {
                    html_output += UpdateAbbonato(req.getParameter("id_abbonato"),req.getParameter("id_tipologia"),req.getParameter("nominativo"), req.getParameter("riferimento"), req.getParameter("indirizzo"), req.getParameter("cap"),req.getParameter("id_citta_old") ,req.getParameter("id_citta"), req.getParameter("data_registrazione"), req.getParameter("data_decorrenza"), req.getParameter("data_scadenza"), req.getParameter("importo"), req.getParameter("id_categoria"), req.getParameter("da_numero"), req.getParameter("a_numero"), req.getParameter("telefono"), req.getParameter("cellulare"), req.getParameter("email"), req.getParameter("copie"), req.getParameter("rinnovo"), req.getParameter("abbinato"), req.getParameter("note"),req.getParameter("id_abbinamento"));
                }
            }
         
         /* Gestione Tipologie
         * Inserimento, Modifica, Cancellazione
         *    
        */
        // Inserimento Tipologia
        } else if (azione.compareTo("inserimento_tipologia") == 0){
            if (req.getParameter("descrizione_tipologia") == null ){
                html_output = getFormInserimentoTipologia();
            } else {
                html_output = InserimentoTipologia(req.getParameter("descrizione_tipologia"));
            }
            
        // Modifica Tipologia
        }  else if (azione.compareTo("modifica_tipologia") == 0){
            if (req.getParameter("id_tipologia") == null ){
                html_output = getListaModificaTipologia();
            } else {
                if (req.getParameter("operazione").compareTo("elimina") == 0) {
                    html_output += EliminaTipologia(req.getParameter("id_tipologia"));
                } else if (req.getParameter("operazione").compareTo("modifica") == 0) {
                    html_output += getFormModificaTipologia(req.getParameter("id_tipologia"));
                } else if (req.getParameter("operazione").compareTo("salva_modifica") == 0) {
                    html_output += UpdateTipologia(req.getParameter("id_tipologia"),req.getParameter("descrizione_tipologia"));
                }
            }
            
       
            
         /* Gestione Categorie
         * Inserimento, Modifica, Cancellazione
         *    
        */
        // Inserimento Categoria
        } else if (azione.compareTo("inserimento_categoria") == 0){
            if (req.getParameter("descrizione_categoria") == null ){
                html_output = getFormInserimentoCategoria();
            } else {
                html_output = InserimentoCategoria(req.getParameter("descrizione_categoria"));
            }
            
        // Modifica Categoria
        }  else if (azione.compareTo("modifica_categoria") == 0){
            if (req.getParameter("id_categoria") == null ){
                html_output = getListaModificaCategoria();
            } else {
                if (req.getParameter("operazione").compareTo("elimina") == 0) {
                    html_output += EliminaCategoria(req.getParameter("id_categoria"));
                } else if (req.getParameter("operazione").compareTo("modifica") == 0) {
                    html_output += getFormModificaCategoria(req.getParameter("id_categoria"));
                } else if (req.getParameter("operazione").compareTo("salva_modifica") == 0) {
                    html_output += UpdateCategoria(req.getParameter("id_categoria"),req.getParameter("descrizione_categoria"));
                }
            }            
            
            
            
            
            
         /* Gestione Abbinamenti
         * Inserimento, Modifica, Cancellazione
         *    
        */
        // Inserimento Categoria
        } else if (azione.compareTo("inserimento_abbinamento") == 0){
            if (req.getParameter("descrizione_abbinamento") == null ){
                html_output = getFormInserimentoAbbinamento();
            } else {
                html_output = InserimentoAbbinamento(req.getParameter("descrizione_abbinamento"));
            }
            
        // Modifica Abbinamento
        }  else if (azione.compareTo("modifica_abbinamento") == 0){
            if (req.getParameter("id_abbinamento") == null ){
                html_output = getListaModificaAbbinamento();
            } else {
                if (req.getParameter("operazione").compareTo("elimina") == 0) {
                    html_output += EliminaAbbinamento(req.getParameter("id_abbinamento"));
                } else if (req.getParameter("operazione").compareTo("modifica") == 0) {
                    html_output += getFormModificaAbbinamento(req.getParameter("id_abbinamento"));
                } else if (req.getParameter("operazione").compareTo("salva_modifica") == 0) {
                    html_output += UpdateAbbinamento(req.getParameter("id_abbinamento"),req.getParameter("descrizione_abbinamento"));
                }
            }            
            
            
            
            
            
            
            
            
          /* Gestione Stati
         * Inserimento, Modifica, Cancellazione
         *    
        */
        // Inserimento Stato
        } else if (azione.compareTo("inserimento_stato") == 0){
            if (req.getParameter("nome_stato") == null ){
                html_output = getFormInserimentoStato();
            } else {
                html_output = InserimentoStato(req.getParameter("nome_stato"), req.getParameter("sigla_stato"));
            }
            
        // Modifica Stato
        }  else if (azione.compareTo("modifica_stato") == 0){
            if (req.getParameter("id_stato") == null ){
                html_output = getListaModificaStato();
            } else {
                if (req.getParameter("operazione").compareTo("elimina") == 0) {
                    html_output += EliminaStato(req.getParameter("id_stato"));
                } else if (req.getParameter("operazione").compareTo("modifica") == 0) {
                    html_output += getFormModificaStato(req.getParameter("id_stato"));
                } else if (req.getParameter("operazione").compareTo("salva_modifica") == 0) {
                    html_output += UpdateStato(req.getParameter("id_stato"),req.getParameter("sigla_stato"),req.getParameter("nome_stato"));
                }
            }  
            
            
            
            
            
            
         /* Gestione Comuni
         * Inserimento, Modifica, Cancellazione
         *    
        */
        // Inserimento Comune
        } else if (azione.compareTo("inserimento_comune") == 0){
            if (req.getParameter("descrizione_comune") == null ){
                html_output = getFormInserimentoComune();
            } else {
                html_output = InserimentoComune(req.getParameter("descrizione_comune"),req.getParameter("id_provincia"));
            }
            
        // Modifica Comune
        }  else if (azione.compareTo("modifica_comune") == 0){
            if (req.getParameter("id_citta") == null ){
                html_output = getListaModificaComune(req.getParameter("start"));
            } else {
                if (req.getParameter("operazione").compareTo("elimina") == 0) {
                    html_output += EliminaComune(req.getParameter("id_citta"));
                } else if (req.getParameter("operazione").compareTo("modifica") == 0) {
                    html_output += getFormModificaComune(req.getParameter("id_citta"));
                } else if (req.getParameter("operazione").compareTo("salva_modifica") == 0) {
                    html_output += UpdateComune(req.getParameter("id_citta"),req.getParameter("nome_citta"),req.getParameter("id_provincia"));
                }
            }    
            
            
            
            
            
            
            
            
            
        } else {
            //html_output = "*"+azione+"*<br>Not Implemented!";
            html_output = "Gestione Abbonamenti<br>Accedere alle funzionalita' utilizzando il menu' a sinistra.";
        }
        
        
        

        return html_output;
    }   
   
   public String InserimentoProvincia(String NomeProvincia, String SiglaProvincia, String Id_Regione) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="insert into province values (null,'" + SiglaProvincia + "','"+NomeProvincia+"'," + Id_Regione + ")";
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Inserimento eseguito correttamente!</strong></center><br>\n";
                html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }

  
   public String InserimentoStato(String NomeStato, String SiglaStato) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="insert into stati values (null,'" + NomeStato + "','"+SiglaStato+"')";
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Inserimento eseguito correttamente!</strong></center><br>\n";
                html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
   
   
   
   public String InserimentoNumero(String identificativo_numero, String data_uscita, String note) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";
      String id_numero="";
      try {
                Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                java.sql.Statement stmt_update = cn.createStatement();
                
                String sql="insert into numeri values (null,'" + identificativo_numero + "','"+data_uscita+"','" + note + "')";
                
                if (data_uscita.length() == 0) {                    
                    sql="insert into numeri values (null,'" + identificativo_numero + "','null,null)";
                }
                
              
                stmt.executeUpdate(sql);
                
                // Ottengo ultimo id
                sql = "select id_numero from numeri order by id_numero desc";
                ResultSet rs = stmt.executeQuery(sql);
                if (rs.next()){
                    id_numero = rs.getString("id_numero");
                }
                
                //sql = "select abbonati.id_abbonato from abbonati where abbonati.data_scadenza >= '" + data_uscita +"' and abbonati.data_decorrenza <= '" + data_uscita +  "'";
                sql = "select abbonati.id_abbonato from abbonati where abbonati.da_numero <= " + identificativo_numero +" and abbonati.a_numero >= " + identificativo_numero;
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    sql = "insert into numeri_abbonati set id_numero=" + id_numero + ",id_abbonato=" + rs.getString("id_abbonato");
                    stmt_update.executeUpdate(sql);
                }
                
                html_output += "<center><strong>Inserimento numero eseguito correttamente!</strong></center><br>\n";
                html_output += "<center>Accedi a 'Lista Numeri' per visualizzare e stampare l'elenco degli abbonati.</center><br>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_numero')\"></center>\n";
                rs.close();
                stmt.close();
                stmt_update.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
   
   
   
  
   public String InserimentoTipologia(String DescrizioneTipologia) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="insert into tipologie values (null,'" + DescrizioneTipologia + "')";
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Inserimento eseguito correttamente!</strong></center><br>\n";
                html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }

   
   
     
   public String InserimentoCategoria(String DescrizioneCategoria) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="insert into categorie values (null,'" + DescrizioneCategoria + "')";
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Inserimento eseguito correttamente!</strong></center><br>\n";
                html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
   
   
      public String InserimentoAbbinamento(String DescrizioneAbbinamento) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="insert into abbinamenti values (null,'" + DescrizioneAbbinamento + "')";
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Inserimento eseguito correttamente!</strong></center><br>\n";
                html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  public String InserimentoEmail(String Subject, String Messaggio) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="insert into email_predefinite values (null,'" + Subject + "','" + Messaggio + "')";
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Inserimento eseguito correttamente!</strong></center><br>\n";
                html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }

  
  public String InserimentoComune(String nome_comune, String id_provincia) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="insert into citta values (null,'" + nome_comune + "'," + id_provincia +")";
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Inserimento eseguito correttamente!</strong></center><br>\n";
                html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
  public String InserimentoRegione(String nome_regione, String id_stato) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="insert into regioni values (null,'" + nome_regione + "'," + id_stato +")";
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Inserimento eseguito correttamente!</strong></center><br>\n";
                html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  public String UpdateProvincia(String Id_Provincia, String NomeProvincia, String SiglaProvincia, String Id_Regione) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="update province set sigla_provincia = '" + SiglaProvincia + "', nome_provincia='"+NomeProvincia+"', id_regione=" + Id_Regione + " where id_provincia=" + Id_Provincia;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Aggiornamento eseguito correttamente!</strong></center><br>\n";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_provincia')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }

  public String UpdateComune(String Id_Citta, String NomeCitta, String Id_provincia) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="update citta set nome_citta = '" + NomeCitta + "', id_provincia='"+Id_provincia+"' where id_citta=" + Id_Citta;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Aggiornamento eseguito correttamente!</strong></center><br>\n";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_comune')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
  public String UpdateRegione(String Id_Regione, String NomeRegione, String Id_stato) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="update regioni set nome_regione = '" + NomeRegione + "', id_stato='"+Id_stato+"' where id_regione=" + Id_Regione;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Aggiornamento eseguito correttamente!</strong></center><br>\n";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_regione')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
  public String UpdateEmail(String Id_Email, String Subject, String Messaggio) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="update email_predefinite set subject = '" + Subject + "', messaggio='"+Messaggio+"' where id_email=" + Id_Email;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Aggiornamento eseguito correttamente!</strong></center><br>\n";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_email')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  public String UpdateStato(String Id_Stato, String Sigla_stato, String Nome_stato) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="update stati set sigla_stato = '" + Sigla_stato + "', nome_stato='"+Nome_stato+"' where id_stato=" + Id_Stato;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Aggiornamento eseguito correttamente!</strong></center><br>\n";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_stato')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
  
  
  
 public String UpdateSettaggiEmail(String Server, String Porta, String Mittente) {
      
      /* Inserisce nel DB i dati della nuova provincia
       */
      
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="update siteoptions set smtp_server = '" + Server + "', smtp_port='"+Porta+"',sender_address='" + Mittente +"'";
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Aggiornamento impostazioni eseguito correttamente!</strong></center><br>\n";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=settaggi_email')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
  
  
  
  public String UpdateTipologia(String Id_Tipologia, String Descrizione) {
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="update tipologie set descrizione_tipologia = '" + Descrizione + "' where id_tipologia=" + Id_Tipologia;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Aggiornamento eseguito correttamente!</strong></center><br>\n";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_tipologia')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
  
    public String UpdateCategoria(String Id_Categoria, String Descrizione) {
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="update categorie set descrizione_categoria = '" + Descrizione + "' where id_categoria=" + Id_Categoria;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Aggiornamento eseguito correttamente!</strong></center><br>\n";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_categoria')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
    
        public String UpdateAbbinamento(String Id_Abbinamento, String Descrizione) {
      String html_output="";

      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="update abbinamenti set descrizione_abbinamento = '" + Descrizione + "' where id_abbinamento=" + Id_Abbinamento;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Aggiornamento eseguito correttamente!</strong></center><br>\n";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_abbinamento')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
    
  
  
  public String EliminaProvincia (String id_provincia) {
      String html_output="";
      
      
      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="delete from province where id_provincia=" + id_provincia;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Cancellazione eseguita correttamente!</strong></center><br>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_provincia')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
           
      return html_output;
  }
  
  public String EliminaTipologia (String id_tipologia) {
      String html_output="";
      
      
      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="delete from tipologie where id_tipologia=" + id_tipologia;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Cancellazione eseguita correttamente!</strong></center><br>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_tipologia')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
  public String EliminaCategoria (String id_categoria) {
      String html_output="";
      
      
      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="delete from categorie where id_categoria=" + id_categoria;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Cancellazione eseguita correttamente!</strong></center><br>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_categoria')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
 
  
  
  
  
  public String EliminaAbbinamento (String id_abbinamento) {
      String html_output="";
      
      
      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="delete from abbinamenti where id_abbinamento=" + id_abbinamento;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Cancellazione eseguita correttamente!</strong></center><br>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_abbinamento')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
  
  
  public String EliminaComune (String id_citta) {
      String html_output="";
      
      
      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="delete from citta where id_citta=" + id_citta;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Cancellazione eseguita correttamente!</strong></center><br>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_comune')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
 public String EliminaRegione (String id_regione) {
      String html_output="";
      
      
      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="delete from regioni where id_regione=" + id_regione;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Cancellazione eseguita correttamente!</strong></center><br>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_regione')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
  
  public String EliminaStato (String id_stato) {
      String html_output="";
      
      
      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="delete from stati where id_stato=" + id_stato;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Cancellazione eseguita correttamente!</strong></center><br>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_stato')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
  public String EliminaEmail (String id_email) {
      String html_output="";
      
      
      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="delete from email_predefinite where id_email=" + id_email;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Cancellazione eseguita correttamente!</strong></center><br>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_email')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }
  
  
  
  public String InserimentoAbbonato (String Id_tipologia, String Nominativo, String Riferimento, String Indirizzo, String Cap,  String Id_citta,  String Data_registrazione,  String Data_decorrenza,  String Data_scadenza,  String Importo,  String Id_categoria,  String Da_numero,  String A_numero,  String Telefono,  String Cellulare,  String Email,  String Copie,  String Rinnovo,  String Abbinato,  String Note , String ID_Abbinamento) {
       /* Inserisce nel DB i dati del nuovo abbonato
       */
      
      String html_output="";
      
      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                //String sql="insert into abbonati values ('','" + nome + "','"+ cognome + "','" + indirizzo + "','" + cap + "'," + id_citta + ","+ id_tipologia +")";
                //String sql="INSERT INTO `abbonati` ( `id_abbonato` , `nome` , `cognome` , `indirizzo` , `cap` , `id_citta` , `id_tipologia` ) VALUES (null,'" + nome + "','"+ cognome + "','" + indirizzo + "','" + cap + "'," + id_citta + ","+ id_tipologia +")";
                String sql="insert into abbonati values (null," + Id_tipologia + ",'" + Nominativo + "','"+ Riferimento + "','" + Indirizzo + "','" + Cap + "'," + Id_citta + ",'"+ Data_registrazione +"','" + Data_decorrenza +"','" + Data_scadenza + "'," + Importo + "," + Id_categoria + "," + Da_numero + "," + A_numero + ",'" + Telefono +"','" + Cellulare + "','" + Email +"'," + Copie +",'" + Rinnovo + "','','" + Note +"'," + ID_Abbinamento + ")";
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Inserimento eseguito correttamente!</strong></center><br>\n";
                html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
   }
  
  
  public String RicercaAvanzataAbbonato (String Id_tipologia, String Nominativo, String Riferimento, String Indirizzo, String Cap,  String Id_stato, String Id_regione, String Id_provincia, String Id_citta,  String Data_registrazione,  String Data_decorrenza,  String Data_scadenza,  String Importo,  String Id_categoria,  String Da_numero,  String A_numero,  String Telefono,  String Cellulare,  String Email,  String Copie,  String Rinnovo,  String Abbinato,  String Note, String ID_Abbinamento ) {
       
      String html_output="";
      String where_string = "";
      if (Id_tipologia.compareTo("0") != 0) {
            where_string += " and abbonati.id_tipologia=" + Id_tipologia;
      }
      
      
      
      if (Nominativo.compareTo("") != 0) {
            where_string += " and abbonati.nominativo like '%" + Nominativo + "%'";
      }
      
      if (Riferimento.compareTo("") != 0) {
            where_string += " and abbonati.riferimento like '%" + Riferimento + "%'";
      }
      
      if (Indirizzo.compareTo("") != 0) {
            where_string += " and abbonati.indirizzo like '%" + Indirizzo + "%'";
      }
      
      if (Cap.compareTo("") != 0) {
            where_string += " and abbonati.cap = '" + Cap + "'";
      }

      if (Id_stato.compareTo("") != 0 && Id_stato.compareTo("0") != 0) {
            where_string += " and stati.id_stato=" + Id_stato;
      } 
      
      if (Id_regione.compareTo("") != 0 && Id_regione.compareTo("0") != 0) {
            where_string += " and regioni.id_regione=" + Id_regione;
      } 
      
      if (Id_provincia.compareTo("") != 0 && Id_provincia.compareTo("0") != 0) {
            where_string += " and province.id_provincia=" + Id_provincia;
      } 
            
      if (Id_citta.compareTo("") != 0 && Id_citta.compareTo("0") != 0) {
            where_string += " and abbonati.id_citta=" + Id_citta;
      } 
      
      if (Data_registrazione.compareTo("") != 0) {
            where_string += " and abbonati.data_registrazione = '" + Data_registrazione + "'";
      }
      
      if (Data_decorrenza.compareTo("") != 0) {
            where_string += " and abbonati.data_decorrenza = '" + Data_decorrenza + "'";
      }
      if (Data_scadenza.compareTo("") != 0) {
            where_string += " and abbonati.data_scadenza = '" + Data_scadenza + "'";
      }
      
      
      if (Importo.compareTo("") != 0) {
            where_string += " and abbonati.importo=" + Importo;
      }
      
      if (Id_categoria.compareTo("0") != 0) {
            where_string += " and abbonati.id_categoria=" + Id_categoria;
      }
      
      
      if (Da_numero.compareTo("") != 0) {
            where_string += " and abbonati.da_numero=" + Da_numero;
      }

      if (A_numero.compareTo("") != 0) {
            where_string += " and abbonati.a_numero=" + A_numero;
      }

      if (Telefono.compareTo("") != 0) {
            where_string += " and abbonati.telefono like '%" + Telefono + "%'";
      }
      
      if (Cellulare.compareTo("") != 0) {
            where_string += " and abbonati.cellulare like '%" + Cellulare + "%'";
      }

      if (Email.compareTo("") != 0) {
            where_string += " and abbonati.email like '%" + Email + "%'";
      }
      
      
      if (Copie.compareTo("") != 0) {
            where_string += " and abbonati.copie=" + Copie;
      }
      
      if (Rinnovo.compareTo("-1") != 0) {
            where_string += " and abbonati.rinnovo = '" + Rinnovo + "'";
      }

     /* if (Abbinato.compareTo("-1") != 0) {
            where_string += " and abbonati.abbinato = '" + Abbinato + "'";
      }*/


      if (Note.compareTo("") != 0) {
            where_string += " and abbonati.note like '%" + Note + "%'";
      }      

      if (ID_Abbinamento.compareTo("") != 0 && ID_Abbinamento.compareTo("0") != 0) {
            where_string += " and abbonati.id_abbinamento=" + ID_Abbinamento;
      } 
      
      html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, regioni, stati, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and regioni.id_regione = province.id_regione and stati.id_stato = regioni.id_stato and abbonati.id_tipologia = tipologie.id_tipologia" + where_string, "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
      // 4Debug
      //html_output += "<br>" + "select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, regioni, stati, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and regioni.id_regione = province.id_regione and stati.id_stato = regioni.id_stato and abbonati.id_tipologia = tipologie.id_tipologia" + where_string;
      return html_output;
      //return where_string;
   }
  
 
  
  
  public String UpdateAbbonato(String Id_Abbonato, String Id_tipologia, String Nominativo, String Riferimento, String Indirizzo, String Cap,  String Id_citta_old, String Id_citta,  String Data_registrazione,  String Data_decorrenza,  String Data_scadenza,  String Importo,  String Id_categoria,  String Da_numero,  String A_numero,  String Telefono,  String Cellulare,  String Email,  String Copie,  String Rinnovo,  String Abbinato,  String Note, String ID_Abbinamento ) {

    /* Inserisce nel DB i dati della nuova provincia
    */

    String html_output="";

    try {
           Class.forName(DriverString);
            Connection cn = DriverManager.getConnection (ConnectionString);
            java.sql.Statement stmt = cn.createStatement();  
            String ID_CITTA ="";
            if (Id_citta == null) {
                ID_CITTA = Id_citta_old;
            } else {
                ID_CITTA = Id_citta;
            }
            String sql="update abbonati set id_tipologia=" + Id_tipologia + ", nominativo = '" + Nominativo + "', riferimento='" + Riferimento + "', indirizzo='" +  Indirizzo + "', cap='" + Cap +  "', id_citta=" + ID_CITTA +", data_registrazione = '" + Data_registrazione + "', data_decorrenza='" + Data_decorrenza +  "', data_scadenza='" + Data_scadenza + "', importo=" + Importo + ", id_categoria=" + Id_categoria +", da_numero=" + Da_numero +", a_numero=" + A_numero +", telefono='" + Telefono + "', cellulare='" + Cellulare + "', email='" + Email +"', copie=" + Copie + ", rinnovo='" + Rinnovo + "', abbinato='', note='" + Note + "', id_abbinamento=" + ID_Abbinamento + " where id_abbonato=" + Id_Abbonato;
            stmt.executeUpdate(sql);
            html_output += "<center><strong>Aggiornamento eseguito correttamente!</strong></center><br>\n";
            //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
            html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
            html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_abbonato')\"></center>\n";
            stmt.close();
            cn.close();
       } catch (Exception e) {
            html_output = showError(e);
       }
    return html_output;
}

  public String EliminaAbbonato (String id_abbonato) {
      String html_output="";
      
      
      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="delete from abbonati where id_abbonato=" + id_abbonato;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Cancellazione eseguita correttamente!</strong></center><br>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_abbonato')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  } 

    
  public String EliminaNumero (String id_numero) {
      String html_output="";
      
      
      try {
               Class.forName(DriverString);
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="delete from numeri_abbonati where id_numero=" + id_numero;
                stmt.executeUpdate(sql);
                
                sql="delete from numeri where id_numero=" + id_numero;
                stmt.executeUpdate(sql);
                html_output += "<center><strong>Cancellazione Numero eseguita correttamente!</strong></center><br>\n";
                html_output += "<script language='Javascript'> function bulinker(where) { top.location = where } </script>";
                //html_output += "<center><input type=button value='Back' onClick='history.go(-1)'></center>\n";
                html_output += "<center><input type=button value='Back' onClick=\"bulinker('index.jsp?action=modifica_numero')\"></center>\n";
                stmt.close();
                cn.close();
           } catch (Exception e) {
                html_output = showError(e);
           }
      return html_output;
  }    
    
    
    
 public String getProvinciaCittaDD(String ID_Stato, String ID_Provincia, String ID_Citta) {
        String html_output = "";
        String select_provincia = "";
        String select_citta = "modelinfo = new Array(\n";
        String id_provincia = "";
        
        String Provincia_Default = "Seleziona Provincia";
        String Citta_Default = "Seleziona Comune";
        
        try {
            Class.forName(DriverString);
            Connection cn = DriverManager.getConnection (ConnectionString);
        
            java.sql.Statement stmt = cn.createStatement();
            java.sql.Statement stmt2 = cn.createStatement();
            
            
            // Caricamento Dati di default
            if (ID_Provincia != "0" && ID_Citta !="0") {
                ResultSet rs_defaults = stmt.executeQuery("select nome_citta from citta where id_citta=" + ID_Citta);
                if ( rs_defaults.next() ) {
                    Citta_Default = "*" + rs_defaults.getString(1) + "*";
                }
                rs_defaults = stmt.executeQuery("select sigla_provincia, nome_provincia from province where id_provincia=" + ID_Provincia);
                if ( rs_defaults.next() ) {
                    Provincia_Default = "*" + rs_defaults.getString(2) + " (" + rs_defaults.getString(1) + ")*";
                }
            }
            
            
            
            
            String sql="SELECT id_provincia, nome_provincia, sigla_provincia from province,regioni where regioni.id_regione = province.id_regione and regioni.id_stato=" + ID_Stato;
            ResultSet rs2;
            ResultSet rs = stmt.executeQuery(sql);
            
            //select_provincia += "Provincia: <SELECT id=id_provincia name=id_provincia onChange=\"fillSelectFromArray(this.form.id_citta, ((this.selectedIndex == -1) ? null : modelinfo[this.selectedIndex-1]));\"> \n\n<OPTION VALUE=\"" + ID_Provincia + "\">" + Provincia_Default +  "\n";
            select_provincia += "Provincia: <SELECT id=id_provincia name=id_provincia onChange=\"fillSelectFromArray(id_citta, ((this.selectedIndex == -1) ? null : modelinfo[this.selectedIndex-1]));\"> \n\n<OPTION VALUE=\"" + ID_Provincia + "\">" + Provincia_Default +  "\n";
            while (rs.next()) {
                id_provincia = rs.getString("id_provincia");
                //html_output += "<option value=" + rs.getString("id_provincia") + ">" + rs.getString("nome_provincia") + " (" +  rs.getString("sigla_provincia")  +")";
                select_provincia += "<option value=" + id_provincia + ">" + rs.getString("nome_provincia") + " (" +  rs.getString("sigla_provincia")  +")\n";
                
                // Caricamento lista comuni per la provincia
                rs2 = stmt2.executeQuery("SELECT id_citta, nome_citta from citta where id_provincia=" + id_provincia);
                
                select_citta += "new Array(\n";
                select_citta += "new Array(\"Seleziona Comune\", 0),\n";
                //select_citta += "new Array(\"" + Citta_Default +  "\"," + ID_Citta + "),\n";
                while (rs2.next()) {
                    select_citta += "new Array(\"" + rs2.getString(2) + "\"," + rs2.getString(1) + "),\n";  
                }
                select_citta += "new Array(\"\", 0)\n";
                select_citta += "),\n";
                rs2.close();
            }   
            select_provincia += "</SELECT>\n";
            select_citta += "null);\n";
            stmt.close();            
            rs.close();
            stmt2.close();
            cn.close();

            html_output += "<SCRIPT LANGUAGE=\"JavaScript\">\n";
            html_output += select_citta;
            html_output += "function fillSelectFromArray(selectCtrl, itemArray, goodPrompt, badPrompt, defaultItem) { \nvar i, j;\n var prompt;\n for (i = selectCtrl.options.length; i >= 0; i--) { \n selectCtrl.options[i] = null;\n }\n prompt = (itemArray != null) ? goodPrompt : badPrompt; if (prompt == null) { j = 0; } else {		 selectCtrl.options[0] = new Option(prompt); j = 1; } if (itemArray != null) { for (i = 0; i < itemArray.length; i++) { selectCtrl.options[j] = new Option(itemArray[i][0]); if (itemArray[i][1] != null) { selectCtrl.options[j].value = itemArray[i][1];  } j++; } selectCtrl.options[0].selected = true;}}</SCRIPT>\n\n";
            html_output += select_provincia;
            //html_output += "&nbsp;&nbsp;Comune: <SELECT NAME=\"id_citta\" >\n<option value=-1>Seleziona Comune</SELECT>";
            html_output += "&nbsp;&nbsp;Comune: <SELECT NAME=\"id_citta\" >\n<option value=" + ID_Citta + ">" + Citta_Default + "</SELECT>";
        }
            catch (Exception e) {
                html_output = showError(e);
            }
            
            return html_output;
    }

  public String getStatiRegioniDD(String ID_Stato, String ID_Regione) {
        String html_output = "";
        String select_stato = "";
        String select_regione = "modelinfo = new Array(\n";
        String id_stato = "";
        
        String Stato_Default = "Seleziona Stato";
        String Regione_Default = "Seleziona Regione";
        
        try {
            Class.forName(DriverString);
            Connection cn = DriverManager.getConnection (ConnectionString);
        
            java.sql.Statement stmt = cn.createStatement();
            java.sql.Statement stmt2 = cn.createStatement();
            
            
            // Caricamento Dati di default
            if (ID_Stato != "0" && ID_Regione !="0") {
                ResultSet rs_defaults = stmt.executeQuery("select nome_regione from regioni where id_regione=" + ID_Regione);
                if ( rs_defaults.next() ) {
                    Regione_Default = "*" + rs_defaults.getString(1) + "*";
                }
                rs_defaults = stmt.executeQuery("select sigla_stato, nome_stato from stati where id_stato=" + ID_Stato);
                if ( rs_defaults.next() ) {
                    Stato_Default = "*" + rs_defaults.getString(2) + " (" + rs_defaults.getString(1) + ")*";
                }
            }
            
            
            
            
            String sql="SELECT id_stato, nome_stato, sigla_stato from stati";
            ResultSet rs2;
            ResultSet rs = stmt.executeQuery(sql);
            
            //select_provincia += "Provincia: <SELECT id=id_provincia name=id_provincia onChange=\"fillSelectFromArray(this.form.id_citta, ((this.selectedIndex == -1) ? null : modelinfo[this.selectedIndex-1]));\"> \n\n<OPTION VALUE=\"" + ID_Provincia + "\">" + Provincia_Default +  "\n";
            select_stato += "Stato: <SELECT id=id_stato name=id_stato onChange=\"fillSelectFromArray(id_regione, ((this.selectedIndex == -1) ? null : modelinfo[this.selectedIndex-1]));\"> \n\n<OPTION VALUE=\"" + ID_Stato + "\">" + Stato_Default +  "\n";
            while (rs.next()) {
                id_stato = rs.getString("id_stato");
                //html_output += "<option value=" + rs.getString("id_provincia") + ">" + rs.getString("nome_provincia") + " (" +  rs.getString("sigla_provincia")  +")";
                select_stato += "<option value=" + id_stato + ">" + rs.getString("nome_stato") + " (" +  rs.getString("sigla_stato")  +")\n";
                
                // Caricamento lista comuni per la provincia
                rs2 = stmt2.executeQuery("SELECT id_regione, nome_regione from regioni where id_stato=" + id_stato);
                
                select_regione += "new Array(\n";
                select_regione += "new Array(\"Seleziona Regione\", 0),\n";
                //select_citta += "new Array(\"" + Citta_Default +  "\"," + ID_Citta + "),\n";
                while (rs2.next()) {
                    select_regione += "new Array(\"" + rs2.getString(2) + "\"," + rs2.getString(1) + "),\n";  
                }
                select_regione += "new Array(\"\", 0)\n";
                select_regione += "),\n";
                rs2.close();
            }   
            select_stato += "</SELECT>\n";
            select_regione += "null);\n";
            stmt.close();            
            rs.close();
            stmt2.close();
            cn.close();

            html_output += "<SCRIPT LANGUAGE=\"JavaScript\">\n";
            html_output += select_regione;
            html_output += "function fillSelectFromArray(selectCtrl, itemArray, goodPrompt, badPrompt, defaultItem) { \nvar i, j;\n var prompt;\n for (i = selectCtrl.options.length; i >= 0; i--) { \n selectCtrl.options[i] = null;\n }\n prompt = (itemArray != null) ? goodPrompt : badPrompt; if (prompt == null) { j = 0; } else {		 selectCtrl.options[0] = new Option(prompt); j = 1; } if (itemArray != null) { for (i = 0; i < itemArray.length; i++) { selectCtrl.options[j] = new Option(itemArray[i][0]); if (itemArray[i][1] != null) { selectCtrl.options[j].value = itemArray[i][1];  } j++; } selectCtrl.options[0].selected = true;}}</SCRIPT>\n\n";
            html_output += select_stato;
            //html_output += "&nbsp;&nbsp;Comune: <SELECT NAME=\"id_citta\" >\n<option value=-1>Seleziona Comune</SELECT>";
            html_output += "&nbsp;&nbsp;Comune: <SELECT NAME=\"id_regione\" >\n<option value=" + ID_Regione + ">" + Regione_Default + "</SELECT>";
        }
            catch (Exception e) {
                html_output = showError(e);
            }
            
            return html_output;
    }

 public String getStatoProvinciaCittaDD(String ID_Stato, String ID_Provincia, String ID_Citta) {
        String html_output = "";
        String select_provincia = "";
        String select_citta = "modelinfo = new Array(\n";
        String id_provincia = "";
        
        String Provincia_Default = "Seleziona Provincia";
        String Citta_Default = "Seleziona Comune";
        
        try {
            Class.forName(DriverString);
            Connection cn = DriverManager.getConnection (ConnectionString);
        
            java.sql.Statement stmt = cn.createStatement();
            java.sql.Statement stmt2 = cn.createStatement();
            
            
            // Caricamento Dati di default
            if (ID_Provincia != "0" && ID_Citta !="0") {
                ResultSet rs_defaults = stmt.executeQuery("select nome_citta from citta where id_citta=" + ID_Citta);
                if ( rs_defaults.next() ) {
                    Citta_Default = "*" + rs_defaults.getString(1) + "*";
                }
                rs_defaults = stmt.executeQuery("select sigla_provincia, nome_provincia from province where id_provincia=" + ID_Provincia);
                if ( rs_defaults.next() ) {
                    Provincia_Default = "*" + rs_defaults.getString(2) + " (" + rs_defaults.getString(1) + ")*";
                }
            }
            
            
            
            
            String sql="SELECT id_provincia, nome_provincia, sigla_provincia from province";
            ResultSet rs2;
            ResultSet rs = stmt.executeQuery(sql);
            
            select_provincia += "Provincia: <SELECT id=id_provincia name=id_provincia onChange=\"fillSelectFromArray(this.form.id_citta, ((this.selectedIndex == -1) ? null : modelinfo[this.selectedIndex-1]));\"> \n\n<OPTION VALUE=\"" + ID_Provincia + "\">" + Provincia_Default +  "\n";
            
            while (rs.next()) {
                id_provincia = rs.getString("id_provincia");
                //html_output += "<option value=" + rs.getString("id_provincia") + ">" + rs.getString("nome_provincia") + " (" +  rs.getString("sigla_provincia")  +")";
                select_provincia += "<option value=" + id_provincia + ">" + rs.getString("nome_provincia") + " (" +  rs.getString("sigla_provincia")  +")\n";
                
                // Caricamento lista comuni per la provincia
                rs2 = stmt2.executeQuery("SELECT id_citta, nome_citta from citta where id_provincia=" + id_provincia);
                
                select_citta += "new Array(\n";
                select_citta += "new Array(\"Seleziona Comune\", 0),\n";
                //select_citta += "new Array(\"" + Citta_Default +  "\"," + ID_Citta + "),\n";
                while (rs2.next()) {
                    select_citta += "new Array(\"" + rs2.getString(2) + "\"," + rs2.getString(1) + "),\n";  
                }
                select_citta += "new Array(\"\", 0)\n";
                select_citta += "),\n";
                rs2.close();
            }   
            select_provincia += "</SELECT>\n";
            select_citta += "null);\n";
            stmt.close();            
            rs.close();
            stmt2.close();
            cn.close();

            html_output += "<SCRIPT LANGUAGE=\"JavaScript\">\n";
            html_output += select_citta;
            html_output += "function fillSelectFromArray(selectCtrl, itemArray, goodPrompt, badPrompt, defaultItem) { \nvar i, j;\n var prompt;\n for (i = selectCtrl.options.length; i >= 0; i--) { \n selectCtrl.options[i] = null;\n }\n prompt = (itemArray != null) ? goodPrompt : badPrompt; if (prompt == null) { j = 0; } else {		 selectCtrl.options[0] = new Option(prompt); j = 1; } if (itemArray != null) { for (i = 0; i < itemArray.length; i++) { selectCtrl.options[j] = new Option(itemArray[i][0]); if (itemArray[i][1] != null) { selectCtrl.options[j].value = itemArray[i][1];  } j++; } selectCtrl.options[0].selected = true;}}</SCRIPT>\n\n";
            html_output += select_provincia;
            //html_output += "&nbsp;&nbsp;Comune: <SELECT NAME=\"id_citta\" >\n<option value=-1>Seleziona Comune</SELECT>";
            html_output += "&nbsp;&nbsp;Comune: <SELECT NAME=\"id_citta\" >\n<option value=" + ID_Citta + ">" + Citta_Default + "</SELECT>";
        }
            catch (Exception e) {
                html_output = showError(e);
            }
            
            return html_output;
    }

 public String getTipologieDD(String Default_ID) {
        String html_output = "";
        html_output = getDDFromQuery("SELECT id_tipologia, descrizione_tipologia from tipologie", "id_tipologia", "descrizione_tipologia", Default_ID);
        return html_output;
  }
 
  public String getProvinceDD(String Default_ID) {
        String html_output = "";
        html_output = getDDFromQuery("SELECT id_provincia, sigla_provincia from province", "id_provincia", "sigla_provincia", Default_ID);
        return html_output;
  }

   public String getStatiDD(String Default_ID) {
        String html_output = "";
        html_output = getDDFromQuery("SELECT id_stato, nome_stato from stati", "id_stato", "nome_stato", Default_ID);
        return html_output;
  }
  
  public String getRegioniDD(String Default_ID) {
        String html_output = "";
        html_output = getDDFromQuery("SELECT id_regione, nome_regione from regioni", "id_regione", "nome_regione", Default_ID);
        return html_output;
  }
  
  
  public String getEmailDD() {
        String html_output = "";
        html_output = getDDFromQuery("SELECT id_email, subject from email_predefinite", "id_email", "subject", "0");
        return html_output;
  }
  
  
  public String getStatiRegioniProvinceComuniDD(String Default_ID) {
        
        //("SELECT id_stato, nome_stato from stati", "id_stato", "nome_stato", Default_ID);
        
        
        
        
        String html_output = "<script type=\"text/javascript\" src=\"jscript/xml.js\"></script> ";
        html_output += "<fieldset>";
        String Default_Text =  "Seleziona...";
        try {
            Class.forName(DriverString);
            Connection cn = DriverManager.getConnection (ConnectionString);
        
            java.sql.Statement stmt = cn.createStatement();
            String sql="SELECT id_stato, nome_stato from stati";
            ResultSet rs;
            
           // if (Default_ID != "0") {
           //     rs = stmt.executeQuery(sql + " where " + CampoID + "=" + Default_ID);
           //     if (rs.next()) {
           //         Default_Text = "*" + rs.getString(CampoDescrizione) + "*";
           //     }
           // }
            
            rs = stmt.executeQuery(sql);
            
            html_output = html_output + "Stato: <SELECT id='id_stato' name='id_stato' onchange=\"showSlide('regioni','Regioni.jsp?id_stato=' + this.options[this.selectedIndex].value)\">";
            html_output += "<option value=" + Default_ID +">" + Default_Text;
            while (rs.next()) {
                html_output += "<option value=" + rs.getString(1) + ">" + rs.getString(2) + "</option>";
            }   
             html_output += "</SELECT><DIV ID=\"regioni\"></DIV>";
            html_output += "</SELECT><DIV ID=\"province\"></DIV>";
            html_output += "</SELECT><DIV ID=\"comuni\"></DIV>";
            html_output += "</fieldset>";
            stmt.close();
            rs.close();
            cn.close();
        }
            catch (Exception e) {
                html_output = showError(e);
            }
            
            return html_output;
        
  }
    
  public String getStatiRegioniProvinceDD(String Default_ID) {
        
        //("SELECT id_stato, nome_stato from stati", "id_stato", "nome_stato", Default_ID);
        
        
        
        
        String html_output = "<script type=\"text/javascript\" src=\"jscript/xml.js\"></script> ";
        //html_output += "<fieldset>";
        String Default_Text =  "Seleziona...";
        try {
            Class.forName(DriverString);
            Connection cn = DriverManager.getConnection (ConnectionString);
        
            java.sql.Statement stmt = cn.createStatement();
            String sql="SELECT id_stato, nome_stato from stati";
            ResultSet rs;
            
           // if (Default_ID != "0") {
           //     rs = stmt.executeQuery(sql + " where " + CampoID + "=" + Default_ID);
           //     if (rs.next()) {
           //         Default_Text = "*" + rs.getString(CampoDescrizione) + "*";
           //     }
           // }
            
            rs = stmt.executeQuery(sql);
            
            html_output = html_output + "Stato: <SELECT id='id_stato' name='id_stato' onchange=\"showSlide('regioni','Regioni.jsp?id_stato=' + this.options[this.selectedIndex].value)\">";
            html_output += "<option value=" + Default_ID +">" + Default_Text;
            while (rs.next()) {
                html_output += "<option value=" + rs.getString(1) + ">" + rs.getString(2) + "</option>";
            }   
             html_output += "</SELECT><DIV ID=\"regioni\"></DIV>";
            html_output += "</SELECT><DIV ID=\"province\"></DIV>";
          //  html_output += "</fieldset>";
            stmt.close();
            rs.close();
            cn.close();
        }
            catch (Exception e) {
                html_output = showError(e);
            }
            
            return html_output;
        
  }
    
  public String getCategorieDD(String Default_ID) {
        String html_output = "";
        html_output = getDDFromQuery("SELECT id_categoria, descrizione_categoria from categorie", "id_categoria", "descrizione_categoria", Default_ID);
        return html_output;
  }

  
  public String getAbbinamentiDD(String Default_ID) {
        String html_output = "";
        html_output = getDDFromQuery("SELECT id_abbinamento, descrizione_abbinamento from abbinamenti", "id_abbinamento", "descrizione_abbinamento", Default_ID);
        return html_output;
  }
  
  public String getFormInserimentoTipologia() {
       String html_output="";
       
       html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='inserimento_tipologia'><input type='hidden' name='operazione' value='conferma_inserimento'><p>Descrizione Tipologia: <input type='text' name='descrizione_tipologia' size='20'> </p>";
   //   html_output += "<p>Citta':" + getCittaDD() +  "</p>";
       html_output += "<p><input type='submit' value='Inserisci' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
   
  
   public String getFormInserimentoCategoria() {
       String html_output="";
       
       html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='inserimento_categoria'><input type='hidden' name='operazione' value='conferma_inserimento'><p>Descrizione Categoria: <input type='text' name='descrizione_categoria' size='20'> </p>";
   //   html_output += "<p>Citta':" + getCittaDD() +  "</p>";
       html_output += "<p><input type='submit' value='Inserisci' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
  
   public String getFormInserimentoAbbinamento() {
       String html_output="";
       
       html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='inserimento_abbinamento'><input type='hidden' name='operazione' value='conferma_inserimento'><p>Descrizione Abbinamento: <input type='text' name='descrizione_abbinamento' size='20'> </p>";
       html_output += "<p><input type='submit' value='Inserisci' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }   
   
   
  
public String getFormInserimentoEmail() {
   String html_output="";

   html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='inserimento_email'><input type='hidden' name='operazione' value='conferma_inserimento'><p>Subject: <input type='text' name='subject' size='20'> </p>";
   html_output += "<p>Messaggio:<br><textarea name='messaggio' rows=10 cols=70></textarea></p>";
   html_output += "<p><input type='submit' value='Inserisci' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

   return html_output;
} 



public String getFormNewsletter() {
   String html_output="";

   html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='invio_newsletter'><input type='hidden' name='operazione' value='invia'><p>Subject: <input type='text' name='soggetto' size='20'> </p>";
   html_output += "<p>Messaggio:<br><textarea name='messaggio' rows=10 cols=70></textarea></p>";
   html_output += "<p><input type='submit' value='Inserisci' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

   return html_output;
} 

  
public String getFormSettaggiEmail() {
   String html_output="";

      String ServerAddress = getProp("smtp_server");
      String ServerPort = getProp("smtp_port");
      String Mittente = getProp("sender_address");
   
   
   html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='settaggi_email'><input type='hidden' name='operazione' value='salva_settaggi'>";
   html_output += "<p>Server SMTP:<input type='text' name='server' size='20' value='" + ServerAddress +"'>&nbsp;&nbsp;Porta:<input type='text' name='porta' size='5' value='" + ServerPort + "'></p>";
   html_output += "<p>Mittente E-Mail:<input type='text' name='mittente' size='40' value='" + Mittente + "'></p>";
   html_output += "<p><input type='submit' value='Modifica' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

   return html_output;
} 

  
  
  public String getFormInserimentoProvincia() {      
      /*Restituisce il form di inserimento nuova provincia
       */
      String html_output="";
      html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='inserimento_provincia'><p>Regione:" + getStatiRegioniDD("0","0") + "<br><br>Sigla Provincia: <input type='text' name='sigla_provincia' size='2'><br><br>Descrizione Provincia: <input type='text' name='nome_provincia' size='20'><br><input type='submit' value='Inserisci'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
      return html_output;
  }
  
  public String getFormInserimentoStato() {       
      /*Restituisce il form di inserimento nuovo stato
       */
      String html_output="";
      html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='inserimento_stato'><p><br><br>Sigla Stato: <input type='text' name='sigla_stato' size='2'><br><br>Nome Stato: <input type='text' name='nome_stato' size='20'><br><br><input type='submit' value='Inserisci'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
      return html_output;
  }
   
  
  public String getFormInserimentoNumero() {      
      /*Restituisce il form di inserimento nuovo stato
       */
      String html_output="";
      html_output += "<script language=\"JavaScript\" src=\"jscript/overlib_mini.js\"></script>\n";
      html_output += "<script language=\"JavaScript\" src=\"jscript/calendario.js\"></script>\n";
      html_output += "<fieldset><br><br><form name='numero'><input type='hidden' name='action' value='inserimento_numero'><input type='hidden' name='operazione' value='conferma_inserimento'><p>Identificativo Numero: <input type='text' name='identificativo_numero' size='2'></p><p>Data Uscita: <input type='text' name='data_uscita' size='10'><a href=\"javascript:show_calendar('numero.data_uscita');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a></p><br>";
      html_output += "<p>Note:</P><p><textarea name='descrizione' rows=7 cols=50></textarea>\n";
      html_output += "<p align=center><strong>Attenzione!</strong> La procedura di inserimento del nuovo numero richiede circa un minuto di elaborazione.</P>";
      html_output += "<p><input type='submit' value='Inserisci'><input type='reset' value='Reset'></p></form><br><br></P></fieldset>";
      return html_output;
  }
  
  public String getFormModificaProvincia(String Id_Provincia) {
      String html_output = "";

      try {
               Class.forName(DriverString);
                //apertura connessione
                //Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.0.3/test?user=test&password=test");
                // Connection cn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://ormt189:1433;DatabaseName=Procedure_rmreps;user=test;password=test");
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="SELECT sigla_provincia, nome_provincia, id_regione from province where id_provincia="+Id_Provincia;
                ResultSet rs = stmt.executeQuery(sql);
                if(rs.next()) {
                    html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_provincia'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_provincia' value='"+ Id_Provincia + "'><p>Regione:" + getRegioniDD(rs.getString(3)) + "<br><br>Sigla Provincia: <input type='text' name='sigla_provincia' size='2' value='" + rs.getString(1) + "'><br>Descrizione Provincia: <input type='text' name='nome_provincia' size='20' value='" +  rs.getString(2) +"'><br><input type='submit' value='Modifica'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
                     //html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='inserimento_provincia'><p>Sigla Provincia: <input type='text' name='sigla_provincia' size='2'><br><br>Descrizione Provincia: <input type='text' name='nome_provincia' size='20'><br><input type='submit' value='Inserisci'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
                }
                rs.close();
                stmt.close();
                cn.close();
           } catch (Exception e) {
               html_output = showError(e);
           }

      return html_output;
  }
   
  public String getFormModificaEmail(String Id_Email) {
      String html_output = "";

      try {
               Class.forName(DriverString);
                //apertura connessione
                //Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.0.3/test?user=test&password=test");
                // Connection cn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://ormt189:1433;DatabaseName=Procedure_rmreps;user=test;password=test");
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="SELECT subject, messaggio from email_predefinite where id_email="+Id_Email;
                ResultSet rs = stmt.executeQuery(sql);
                if(rs.next()) {
                    html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_email'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_email' value='"+ Id_Email + "'><p>Subject: <input type='text' name='subject' value='" + rs.getString(1) + "'></p><p>Messaggio:<br><textarea name='messaggio' rows=10 cols=70>" + rs.getString(2) + "</textarea><br><input type='submit' value='Modifica'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
                }
                rs.close();
                stmt.close();
                cn.close();
           } catch (Exception e) {
               html_output = showError(e);
           }

      return html_output;
  } 
  
  
  public String getFormModificaStato(String Id_Stato) {
      String html_output = "";

      try {
               Class.forName(DriverString);
                //apertura connessione
                //Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.0.3/test?user=test&password=test");
                // Connection cn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://ormt189:1433;DatabaseName=Procedure_rmreps;user=test;password=test");
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="SELECT nome_stato, sigla_stato from stati where id_stato="+Id_Stato;
                ResultSet rs = stmt.executeQuery(sql);
                if(rs.next()) {
                    //html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_email'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_email' value='"+ Id_Email + "'><p>Subject: <input type='text' name='subject' value='" + rs.getString(1) + "'></p><p>Messaggio:<br><textarea name='messaggio' rows=10 cols=70>" + rs.getString(2) + "</textarea><br><input type='submit' value='Modifica'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
                     html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_stato'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_stato' value='"+ Id_Stato + "'><p><br><br>Sigla Stato: <input type='text' name='sigla_stato' size='2' value='" + rs.getString(2) + "'><br><br>Nome Stato: <input type='text' name='nome_stato' size='20' value='" + rs.getString(1) + "'><br><br><input type='submit' value='Modifica'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
    
                }
                rs.close();
                stmt.close();
                cn.close();
           } catch (Exception e) {
               html_output = showError(e);
           }

      return html_output;
  } 
  
  
  public String getFormModificaTipologia(String Id_Tipologia) {
      String html_output = "";

      try {
               Class.forName(DriverString);
                //apertura connessione
                //Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.0.3/test?user=test&password=test");
                // Connection cn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://ormt189:1433;DatabaseName=Procedure_rmreps;user=test;password=test");
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="SELECT descrizione_tipologia from tipologie where id_tipologia="+Id_Tipologia;
                ResultSet rs = stmt.executeQuery(sql);
                if(rs.next()) {
                    //html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_email'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_email' value='"+ Id_Email + "'><p>Subject: <input type='text' name='subject' value='" + rs.getString(1) + "'></p><p>Messaggio:<br><textarea name='messaggio' rows=10 cols=70>" + rs.getString(2) + "</textarea><br><input type='submit' value='Modifica'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
                    html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_tipologia'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_tipologia' value='"+ Id_Tipologia + "'><p>Descrizione Tipologia: <input type='text' name='descrizione_tipologia' size='20' value='" + rs.getString(1) + "'> </p>";
                    html_output += "<p><input type='submit' value='Modifica' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";
 
                }
                rs.close();
                stmt.close();
                cn.close();
           } catch (Exception e) {
               html_output = showError(e);
           }

      return html_output;
  } 
  
  
  
    public String getFormModificaCategoria(String Id_Categoria) {
      String html_output = "";

      try {
               Class.forName(DriverString);
                //apertura connessione
                //Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.0.3/test?user=test&password=test");
                // Connection cn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://ormt189:1433;DatabaseName=Procedure_rmreps;user=test;password=test");
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="SELECT descrizione_categoria from categorie where id_categoria="+Id_Categoria;
                ResultSet rs = stmt.executeQuery(sql);
                if(rs.next()) {
                    //html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_email'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_email' value='"+ Id_Email + "'><p>Subject: <input type='text' name='subject' value='" + rs.getString(1) + "'></p><p>Messaggio:<br><textarea name='messaggio' rows=10 cols=70>" + rs.getString(2) + "</textarea><br><input type='submit' value='Modifica'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
                    html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_categoria'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_categoria' value='"+ Id_Categoria + "'><p>Descrizione Categoria: <input type='text' name='descrizione_categoria' size='20' value='" + rs.getString(1) + "'> </p>";
                    html_output += "<p><input type='submit' value='Modifica' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";
 
                }
                rs.close();
                stmt.close();
                cn.close();
           } catch (Exception e) {
               html_output = showError(e);
           }

      return html_output;
  } 
  
  public String getFormModificaAbbinamento(String Id_Abbinamento) {
      String html_output = "";

      try {
               Class.forName(DriverString);
                //apertura connessione
                //Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.0.3/test?user=test&password=test");
                // Connection cn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://ormt189:1433;DatabaseName=Procedure_rmreps;user=test;password=test");
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="SELECT descrizione_abbinamento from abbinamenti where id_abbinamento="+Id_Abbinamento;
                ResultSet rs = stmt.executeQuery(sql);
                if(rs.next()) {
                    //html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_email'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_email' value='"+ Id_Email + "'><p>Subject: <input type='text' name='subject' value='" + rs.getString(1) + "'></p><p>Messaggio:<br><textarea name='messaggio' rows=10 cols=70>" + rs.getString(2) + "</textarea><br><input type='submit' value='Modifica'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
                    html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_abbinamento'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_abbinamento' value='"+ Id_Abbinamento + "'><p>Descrizione Abbinamento: <input type='text' name='descrizione_abbinamento' size='20' value='" + rs.getString(1) + "'> </p>";
                    html_output += "<p><input type='submit' value='Modifica' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";
 
                }
                rs.close();
                stmt.close();
                cn.close();
           } catch (Exception e) {
               html_output = showError(e);
           }

      return html_output;
  } 
  
  public String getFormModificaComune(String Id_citta) {
      String html_output = "";

      try {
               Class.forName(DriverString);
                //apertura connessione
                //Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.0.3/test?user=test&password=test");
                // Connection cn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://ormt189:1433;DatabaseName=Procedure_rmreps;user=test;password=test");
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="SELECT nome_citta, id_provincia from citta where id_citta="+Id_citta;
                ResultSet rs = stmt.executeQuery(sql);
                if(rs.next()) {
                    html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_comune'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_citta' value='"+ Id_citta + "'><p>Nome Comune: <input type='text' name='nome_citta' size='20' value='" + rs.getString(1) + "'><br>Provincia: " + getProvinceDD(rs.getString(2)) + "<br><br><input type='submit' value='Modifica'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
                }
                rs.close();
                stmt.close();
                cn.close();
           } catch (Exception e) {
               html_output = showError(e);
           }

      return html_output;
  }
   
  
  public String getFormModificaRegione(String Id_regione) {
      String html_output = "";

      try {
               Class.forName(DriverString);
                //apertura connessione
                
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="SELECT nome_regione, id_stato from regioni where id_regione="+Id_regione;
                ResultSet rs = stmt.executeQuery(sql);
                if(rs.next()) {
                    //html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_comune'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_citta' value='"+ Id_citta + "'><p>Nome Comune: <input type='text' name='nome_citta' size='20' value='" + rs.getString(1) + "'><br>Provincia: " + getProvinceDD(rs.getString(2)) + "<br><br><input type='submit' value='Modifica'><input type='reset' value='Reset'></p></form><br><br></fieldset>";
                    html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_regione'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_regione' value='"+ Id_regione + "'>";
                    //html_output += "<p>Provincia :" + getDDFromQuery("SELECT id_provincia, nome_provincia from province", "id_provincia", "nome_provincia", "0") +  "</p>";
                    html_output += "<p>Stato: " + getStatiDD(rs.getString("id_stato")) +  "</p>";
                    html_output += "<p>Nome Regione: <input type='text' name='nome_regione' size='20' value='" + rs.getString("nome_regione") + "'> </p>";
                    html_output += "<p><input type='submit' value='Modifica' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";
                }
                rs.close();
                stmt.close();
                cn.close();
           } catch (Exception e) {
               html_output = showError(e);
           }

      return html_output;
  }
  
  
  public String getListaModificaProvincia() {
      
      String html_output = "<script type=\"text/javascript\" src=\"jscript/xml.js\"></script> ";
        //html_output += "<fieldset>";
        String Default_Text =  "Seleziona stato...";
        try {
            Class.forName(DriverString);
            Connection cn = DriverManager.getConnection (ConnectionString);
        
            java.sql.Statement stmt = cn.createStatement();
            String sql="SELECT id_stato, nome_stato from stati";
            ResultSet rs;
            
           // if (Default_ID != "0") {
           //     rs = stmt.executeQuery(sql + " where " + CampoID + "=" + Default_ID);
           //     if (rs.next()) {
           //         Default_Text = "*" + rs.getString(CampoDescrizione) + "*";
           //     }
           // }
            
            rs = stmt.executeQuery(sql);
            
            html_output = html_output + "Stato: <SELECT id='id_stato' name='id_stato' onchange=\"showSlide('lista','lista_province.jsp?id_stato=' + this.options[this.selectedIndex].value)\">";
            html_output += "<option value=\"-1\">" + Default_Text;
            while (rs.next()) {
                html_output += "<option value=" + rs.getString(1) + ">" + rs.getString(2) + "</option>";
            }   
             html_output += "</SELECT><DIV ID=\"lista\"></DIV>";
            
          //  html_output += "</fieldset>";
            stmt.close();
            rs.close();
            cn.close();
        }
            catch (Exception e) {
                html_output = showError(e);
            }
            
            return html_output;
     
  }
 
 
  
  
  public String getListaModificaRegione() {
      
      String html_output = "<script type=\"text/javascript\" src=\"jscript/xml.js\"></script> ";
        //html_output += "<fieldset>";
        String Default_Text =  "Seleziona stato...";
        try {
            Class.forName(DriverString);
            Connection cn = DriverManager.getConnection (ConnectionString);
        
            java.sql.Statement stmt = cn.createStatement();
            String sql="SELECT id_stato, nome_stato from stati";
            ResultSet rs;
            
           // if (Default_ID != "0") {
           //     rs = stmt.executeQuery(sql + " where " + CampoID + "=" + Default_ID);
           //     if (rs.next()) {
           //         Default_Text = "*" + rs.getString(CampoDescrizione) + "*";
           //     }
           // }
            
            rs = stmt.executeQuery(sql);
            
            html_output = html_output + "Stato: <SELECT id='id_stato' name='id_stato' onchange=\"showSlide('lista','lista_regioni.jsp?id_stato=' + this.options[this.selectedIndex].value)\">";
            html_output += "<option value=\"-1\">" + Default_Text;
            while (rs.next()) {
                html_output += "<option value=" + rs.getString(1) + ">" + rs.getString(2) + "</option>";
            }   
             html_output += "</SELECT><DIV ID=\"lista\"></DIV>";
            //html_output += "</SELECT><P ID=\"lista\"></P>";
            
          //  html_output += "</fieldset>";
            stmt.close();
            rs.close();
            cn.close();
        }
            catch (Exception e) {
                html_output = showError(e);
            }
            
            return html_output;
     
  } 
  
  public String getFormInserimentoAbbonato() {
       String html_output="";
       
       html_output += "<script language=\"JavaScript\" src=\"jscript/overlib_mini.js\"></script>\n";
       html_output += "<script language=\"JavaScript\" src=\"jscript/calendario.js\"></script>\n";
       html_output += "<fieldset>\n"; 
       html_output += "<form name=\"abbonato\"><input type='hidden' name='action' value='inserimento_abbonato'><input type='hidden' name='operazione' value='conferma_inserimento'><fieldset><p>Nominativo: <input type='text' name='nominativo' size='30'></p>\n";
       html_output += "<p>Riferimento: <input type='text' name='riferimento' size='20'>&nbsp;&nbsp;Indirizzo E-Mail: <input type='text' name='email' size='20'></p>\n";
       html_output += "<p>Numero di Telefono: <input type='text' name='telefono' size='20'>&nbsp;&nbsp;Numero di Cellulare: <input type='text' name='cellulare' size='20'></p>\n";
       //html_output += "<p>Rinnovo:<select name='rinnovo'><option value='N'>No<option value='S'>Si</select> &nbsp;&nbsp;Abbinato al Manifesto: <select name='abbinato'><option value='N'>No<option value='S'>Si</select></p>\n";       
       html_output += "<p>Rinnovo:<select name='rinnovo'><option value='N'>No<option value='S'>Si</select> &nbsp;&nbsp;Abbinato: " + getAbbinamentiDD("0") + "</p>\n";       
       html_output += "<br></fieldset>\n";
       
       html_output += "<fieldset>\n";
       html_output += getStatiRegioniProvinceComuniDD("0");
       html_output += "\n<p>Indirizzo: <input type='text' name='indirizzo' size='20'> C.A.P.: <input type='text' name='cap' size='20'></p><br>\n";
       html_output += "</fieldset>\n";
       
       html_output += "<fieldset>\n";
       html_output += "<p>Tipologia: " + getTipologieDD("0") + "&nbsp;&nbsp;Categoria: " + getCategorieDD("0") + "&nbsp;&nbsp;Importo: <input type='text' name='importo' size='10'></p>\n";
       html_output += "<div id='overDiv' style='position:absolute; visibility:hidden; z-index:1;'></div>";
       html_output += "<p>Data Registrazione: <input type='text' name='data_registrazione' size='10'><a href=\"javascript:show_calendar('abbonato.data_registrazione');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>\n";
       html_output += "&nbsp; Data Decorrenza: <input type='text' name='data_decorrenza' size='10'><a href=\"javascript:show_calendar('abbonato.data_decorrenza');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>";
       html_output += "&nbsp; Data Scadenza: <input type='text' name='data_scadenza' size='10'><a href=\"javascript:show_calendar('abbonato.data_scadenza');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a> </P>\n";
       html_output += "<p>Dal Numero: <input type='text' name='da_numero' size='5'> &nbsp; Al Numero: <input type='text' name='a_numero' size='5'>&nbsp; Copie: <input type='text' name='copie' size='5'> </P>\n";
       html_output += "<br></fieldset>\n";
       
       html_output += "<fieldset>\n";
       html_output += "<p><textarea name='note' rows=10 cols=70></textarea>\n";
       html_output += "<br></fieldset>\n";
       
       
       html_output += "<fieldset>\n";
       html_output += "<p><input type='submit' value='Inserisci' ><input type='reset' value='Reset'></p></form><br><br></fieldset>\n";
       html_output += "<br></fieldset>\n";
       
       
       return html_output;
   }
   
  
  
  public String getFormRicercaAvanzataAbbonato() {
       String html_output="";
       
       html_output += "<script language=\"JavaScript\" src=\"jscript/overlib_mini.js\"></script>\n";
       html_output += "<script language=\"JavaScript\" src=\"jscript/calendario.js\"></script>\n";
       html_output += "<fieldset>\n"; 
       html_output += "<form name=\"abbonato\"><input type='hidden' name='action' value='ricerca_avanzata'><input type='hidden' name='operazione' value='visualizza_risultati'><fieldset><p>Nominativo: <input type='text' name='nominativo' size='30'></p>\n";
       html_output += "<p>Riferimento: <input type='text' name='riferimento' size='20'>&nbsp;&nbsp;Indirizzo E-Mail: <input type='text' name='email' size='20'></p>\n";
       html_output += "<p>Numero di Telefono: <input type='text' name='telefono' size='20'>&nbsp;&nbsp;Numero di Cellulare: <input type='text' name='cellulare' size='20'></p>\n";
       //html_output += "<p>Rinnovo:<select name='rinnovo'><option value=-1>Scegli...<option value='S'>Si<option value='N'>No</select> &nbsp;&nbsp;Abbinato al Manifesto: <select name='abbinato'><option value=-1>Scegli...<option value='S'>Si<option value='N'>No</select></p>\n";       
       html_output += "<p>Rinnovo:<select name='rinnovo'><option value=-1>Scegli...<option value='N'>No<option value='S'>Si</select> &nbsp;&nbsp;Abbinato: " + getAbbinamentiDD("0") + "</p>\n";       
       html_output += "<br></fieldset>\n";
       
       html_output += "<fieldset>\n";
       html_output += getStatiRegioniProvinceComuniDD("0");
       html_output += "\n<p>Indirizzo: <input type='text' name='indirizzo' size='20'> C.A.P.: <input type='text' name='cap' size='20'></p><br>\n";
       html_output += "</fieldset>\n";
       
       html_output += "<fieldset>\n";
       html_output += "<p>Tipologia: " + getTipologieDD("0") + "&nbsp;&nbsp;Categoria: " + getCategorieDD("0") + "&nbsp;&nbsp;Importo: <input type='text' name='importo' size='10'></p>\n";
       html_output += "<div id='overDiv' style='position:absolute; visibility:hidden; z-index:1;'></div>";
       html_output += "<p>Data Registrazione: <input type='text' name='data_registrazione' size='10'><a href=\"javascript:show_calendar('abbonato.data_registrazione');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>\n";
       html_output += "&nbsp; Data Decorrenza: <input type='text' name='data_decorrenza' size='10'><a href=\"javascript:show_calendar('abbonato.data_decorrenza');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>";
       html_output += "&nbsp; Data Scadenza: <input type='text' name='data_scadenza' size='10'><a href=\"javascript:show_calendar('abbonato.data_scadenza');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a> </P>\n";
       html_output += "<p>Dal Numero: <input type='text' name='da_numero' size='5'> &nbsp; Al Numero: <input type='text' name='a_numero' size='5'>&nbsp; Copie: <input type='text' name='copie' size='5'> </P>\n";
       html_output += "<br></fieldset>\n";
       
       html_output += "<fieldset>\n";
       html_output += "<p><textarea name='note' rows=10 cols=70></textarea>\n";
       html_output += "<br></fieldset>\n";
       
       
       html_output += "<fieldset>\n";
       html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>\n";
       html_output += "<br></fieldset>\n";
       
       
       return html_output;
   }
  
  
  public String getFormModificaAbbonato(String ID_Abbonato) {
       String html_output="";
       try {
           
           
           Class.forName(DriverString);
           Connection cn = DriverManager.getConnection (ConnectionString);
           java.sql.Statement stmt = cn.createStatement();                
           String sql="select abbonati.id_abbonato , abbonati.nominativo, abbonati.riferimento ,  abbonati.indirizzo , abbonati.cap , citta.id_citta, citta.nome_citta , province.id_provincia, province.sigla_provincia , abbonati.id_tipologia, tipologie.descrizione_tipologia, abbonati.data_registrazione, abbonati.data_decorrenza, abbonati.data_scadenza, abbonati.importo, abbonati.id_categoria, abbonati.da_numero, abbonati.a_numero, abbonati.telefono, abbonati.cellulare, abbonati.email, abbonati.copie, abbonati.rinnovo, abbonati.abbinato, abbonati.note, abbonati.id_abbinamento from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and abbonati.id_abbonato=" + ID_Abbonato;
           
           ResultSet rs = stmt.executeQuery(sql);
           if (rs.next()) {
               //html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='modifica_abbonato'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_abbonato' value='" + ID_Abbonato +"'><p>Nome: <input type='text' name='nome' size='20' value='" + rs.getString("abbonati.nome") +"'> Cognome: <input type='text' name='cognome' size='20' value='" + rs.getString("abbonati.cognome") + "'></p><p>Indirizzo: <input type='text' name='indirizzo' size='20' value='"+ rs.getString("abbonati.indirizzo") +"'> C.A.P.: <input type='text' name='cap' size='20' value='"+ rs.getString("abbonati.cap") +"'></p>";
               //html_output += getProvinciaCittaDD(rs.getString("province.id_provincia"), rs.getString("citta.id_citta") );
               //html_output += "<p>Tipologia di abbonamento: " + getTipologieDD(rs.getString("tipologie.id_tipologia")) + "</p>";
               //html_output += "<p><input type='submit' value='Modifica' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

               html_output += "<script language=\"JavaScript\" src=\"jscript/overlib_mini.js\"></script>\n";
               html_output += "<script language=\"JavaScript\" src=\"jscript/calendario.js\"></script>\n";
               html_output += "<fieldset>\n"; 
               html_output += "<form name=\"abbonato\"><input type='hidden' name='action' value='modifica_abbonato'><input type='hidden' name='operazione' value='salva_modifica'><input type='hidden' name='id_abbonato' value='" + ID_Abbonato +"'><fieldset><p>Nominativo: <input type='text' name='nominativo' size='30' value='" + rs.getString("abbonati.nominativo") + "'></p>\n";
               html_output += "<p>Riferimento: <input type='text' name='riferimento' size='20' value='" + rs.getString("abbonati.riferimento") + "'>&nbsp;&nbsp;Indirizzo E-Mail: <input type='text' name='email' size='20' value='" + rs.getString("abbonati.email") + "'></p>\n";
               html_output += "<p>Numero di Telefono: <input type='text' name='telefono' size='20' value='" + rs.getString("abbonati.telefono") + "'>&nbsp;&nbsp;Numero di Cellulare: <input type='text' name='cellulare' size='20' value='" + rs.getString("abbonati.cellulare") +"'></p>\n";
               
               html_output += "<p>Rinnovo:<select name='rinnovo'>";
               if (rs.getString("rinnovo").compareTo("S") ==0) {
                    html_output += "<option value='S' SELECTED>*Si*<option value='N'>No</select>"; 
               } else {
                   html_output += "<option value='S'>Si<option value='N' SELECTED>*No*</select>"; 
               }
               
               html_output += "&nbsp;&nbsp;Abbinato: " + getAbbinamentiDD(rs.getString("id_abbinamento"));
               /*if (rs.getString("abbinato").compareTo("S") ==0) {
                    html_output += "<option value='S' SELECTED>*Si*<option value='N'>No</select>"; 
               } else {
                   html_output += "<option value='S'>Si<option value='N' SELECTED>*No*</select>"; 
               }*/
               
               html_output +="</p>\n";       
               
               
               html_output += "<br></fieldset>\n";

               html_output += "<fieldset>\n";
               
               // Inserire il default
               html_output += "<center><strong>Comune: </strong>" + rs.getString("citta.nome_citta") + "&nbsp;<strong>Provincia:</strong>" + rs.getString("province.sigla_provincia") + "</center><br>";
               html_output += "<input type='hidden' name='id_citta_old' value='" + rs.getString("citta.id_citta") + "'>";
               html_output += getStatiRegioniProvinceComuniDD("0");
               html_output += "\n<p>Indirizzo: <input type='text' name='indirizzo' size='20' value='" + rs.getString("abbonati.indirizzo") + "'> C.A.P.: <input type='text' name='cap' size='20' value='" + rs.getString("abbonati.cap") + "'></p><br>\n";
               html_output += "</fieldset>\n";

               html_output += "<fieldset>\n";
               html_output += "<p>Tipologia: " + getTipologieDD(rs.getString("abbonati.id_tipologia")) + "&nbsp;&nbsp;Categoria: " + getCategorieDD(rs.getString("abbonati.id_categoria")) + "&nbsp;&nbsp;Importo: <input type='text' name='importo' size='10' value='" + rs.getString("abbonati.importo") + "'></p>\n";
               html_output += "<div id='overDiv' style='position:absolute; visibility:hidden; z-index:1000;'></div>";
               html_output += "<p>Data Registrazione: <input type='text' name='data_registrazione' size='10' value='" + rs.getString("abbonati.data_registrazione") + "'><a href=\"javascript:show_calendar('abbonato.data_registrazione');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>\n";
               html_output += "&nbsp; Data Decorrenza: <input type='text' name='data_decorrenza' size='10' value='" + rs.getString("abbonati.data_decorrenza") + "'><a href=\"javascript:show_calendar('abbonato.data_decorrenza');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>";
               html_output += "&nbsp; Data Scadenza: <input type='text' name='data_scadenza' size='10' value='" + rs.getString("abbonati.data_scadenza") + "'><a href=\"javascript:show_calendar('abbonato.data_scadenza');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a> </P>\n";
               html_output += "<p>Dal Numero: <input type='text' name='da_numero' size='5' value='" + rs.getString("abbonati.da_numero") + "'> &nbsp; Al Numero: <input type='text' name='a_numero' size='5' value='" + rs.getString("abbonati.a_numero") + "'>&nbsp; Copie: <input type='text' name='copie' size='5' value='" + rs.getString("abbonati.copie") + "'> </P>\n";
               html_output += "<br></fieldset>\n";

               html_output += "<fieldset>\n";
               html_output += "<p><textarea name='note' rows=10 cols=70>" + rs.getString("abbonati.note") + "</textarea>\n";
               html_output += "<br></fieldset>\n";


               html_output += "<fieldset>\n";
               html_output += "<p><input type='submit' value='Modifica' ><input type='reset' value='Reset'></p></form><br><br></fieldset>\n";
               html_output += "<br></fieldset>\n";
               
               
               
               
               
               
               
               
               
               
           }
           stmt.close();
           rs.close();
           cn.close();
       } catch (Exception e) {
                html_output = showError(e);
       }
           
       return html_output;
   }
   
  public String getListaModificaAbbonato() {
      String html_output="";
      
     // html_output += getTableFromQuery("select province.sigla_provincia as Sigla ,province.nome_provincia as Nome from province");
       html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nome as Nome, abbonati.cognome as Cognome, abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia", "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
      return html_output;
  }
   
  public String getListaModificaEmail() {
      String html_output="";
      
     // html_output += getTableFromQuery("select province.sigla_provincia as Sigla ,province.nome_provincia as Nome from province");
       html_output += getTableFromQuery("select id_email as ID, subject as Subject,CONCAT(SUBSTRING(messaggio,1,40),'...') as Messaggio from email_predefinite", "ID", "index.jsp?action=modifica_email&operazione=modifica&id_email=", "index.jsp?action=modifica_email&operazione=elimina&id_email=");
      return html_output;
  }
  
  public String getListaModificaTipologia() {
      String html_output="";
      
     // html_output += getTableFromQuery("select province.sigla_provincia as Sigla ,province.nome_provincia as Nome from province");
       html_output += getTableFromQuery("select tipologie.id_tipologia as ID,tipologie.descrizione_tipologia as `Descrizione Tipologia` from tipologie", "ID", "index.jsp?action=modifica_tipologia&operazione=modifica&id_tipologia=", "index.jsp?action=modifica_tipologia&operazione=elimina&id_tipologia=");
      return html_output;
  }
  
   public String getListaModificaCategoria() {
      String html_output="";
      
     // html_output += getTableFromQuery("select province.sigla_provincia as Sigla ,province.nome_provincia as Nome from province");
       html_output += getTableFromQuery("select categorie.id_categoria as ID,categorie.descrizione_categoria as `Descrizione Categoria` from categorie", "ID", "index.jsp?action=modifica_categoria&operazione=modifica&id_categoria=", "index.jsp?action=modifica_categoria&operazione=elimina&id_categoria=");
      return html_output;
  }
   
   
   public String getListaModificaAbbinamento() {
      String html_output="";
      
     // html_output += getTableFromQuery("select province.sigla_provincia as Sigla ,province.nome_provincia as Nome from province");
       html_output += getTableFromQuery("select abbinamenti.id_abbinamento as ID,abbinamenti.descrizione_abbinamento as `Descrizione Abbinamento` from abbinamenti", "ID", "index.jsp?action=modifica_abbinamento&operazione=modifica&id_abbinamento=", "index.jsp?action=modifica_abbinamento&operazione=elimina&id_abbinamento=");
      return html_output;
  }
  
public String getListaModificaStato() {
  String html_output="";

 // html_output += getTableFromQuery("select province.sigla_provincia as Sigla ,province.nome_provincia as Nome from province");
   html_output += getTableFromQuery("select stati.id_stato as ID, stati.nome_stato as Stato, stati.sigla_stato as Sigla from stati", "ID", "index.jsp?action=modifica_stato&operazione=modifica&id_stato=", "index.jsp?action=modifica_stato&operazione=elimina&id_stato=");
  return html_output;
}


  
  public String getListaModificaComune(String Inizio) {
      String html_output="";
      if (Inizio == null) {
          int i = 0;
          html_output += "<fieldset><br><center><strong>Seleziona l'iniziale della localita'</strong></center><br><br>";
          for (i=65; i<=90; i++) {
              html_output += "<a href=\"index.jsp?action=modifica_comune&start=" + (char) i + "\">" + (char) i + "</a>&nbsp;";
          }
          html_output += "<br></fieldset>";
      } else {
     // html_output += getTableFromQuery("select province.sigla_provincia as Sigla ,province.nome_provincia as Nome from province");
       html_output += getTableFromQuery("select citta.id_citta as ID,citta.nome_citta as `Nome Comune`, province.sigla_provincia as Provincia from citta,province where citta.id_provincia = province.id_provincia and citta.nome_citta like '" + Inizio + "%'", "ID", "index.jsp?action=modifica_comune&operazione=modifica&id_citta=", "index.jsp?action=modifica_comune&operazione=elimina&id_citta=");
      }
      return html_output;
  }
  
  public String getFormRicercaCitta() {
       String html_output="";
       
       html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='ricerca_comune'><input type='hidden' name='operazione' value='visualizza_risultati'>";
   //    html_output += "<p>Citta':" + getCittaDD() +  "</p>";
       //html_output += getProvinciaCittaDD("0","0");
       html_output += getStatiRegioniProvinceComuniDD("0");
       html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
 
  public String getFormRicercaTipologia() {
       String html_output="";
       
       html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='ricerca_tipologia'><input type='hidden' name='operazione' value='visualizza_risultati'>";
   //    html_output += "<p>Citta':" + getCittaDD() +  "</p>";
       html_output += "Descrizione Tipologia: " + getTipologieDD("0");
       html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
  
  
   public String getFormRicercaCategoria() {
       String html_output="";
       
       html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='ricerca_categoria'><input type='hidden' name='operazione' value='visualizza_risultati'>";
   //    html_output += "<p>Citta':" + getCittaDD() +  "</p>";
       html_output += "Descrizione Categoria: " + getCategorieDD("0");
       html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
  
  
  
   
  public String getFormRicercaProvincia() {
       String html_output="";
       
       html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='ricerca_provincia'><input type='hidden' name='operazione' value='visualizza_risultati'>";
   //    html_output += "<p>Citta':" + getCittaDD() +  "</p>";
       html_output += "Sigla Provincia: " + getProvinceDD("0");
       html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
  
  
   public String getFormRicercaRegione() {
       String html_output="";
       
       html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='ricerca_regione'><input type='hidden' name='operazione' value='visualizza_risultati'>";
   //    html_output += "<p>Citta':" + getCittaDD() +  "</p>";
       html_output += "Regione: " + getRegioniDD("0");
       html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
  
  
  
  
  
  
  
  public String getFormRicercaScadenze() {
       String html_output="";
       html_output += "<script language=\"JavaScript\" src=\"jscript/overlib_mini.js\"></script>\n";
       html_output += "<script language=\"JavaScript\" src=\"jscript/calendario.js\"></script>\n";
       
       html_output += "<fieldset><br><br><form name=\"scadenze\"><input type='hidden' name='action' value='report_scadenze'><input type='hidden' name='operazione' value='visualizza_risultati'>";
      
       html_output += "<p>Dal giorno: <input type='text' name='da_giorno' size='10'><a href=\"javascript:show_calendar('scadenze.da_giorno');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>\n";
       html_output += "&nbsp; al giorno: <input type='text' name='a_giorno' size='10'><a href=\"javascript:show_calendar('scadenze.a_giorno');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>";
      
       html_output += "<br><br> Tipologia: " + getTipologieDD("0") + "&nbsp;Abbinato: " + getAbbinamentiDD("0");
       html_output += "<br><br>Prepara lista per invio E-mail: <input type='checkbox' name='per_email'>";
       html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }

  
  
    public String getFormRicercaScadenzeNumero() {
       String html_output="";
       html_output += "<script language=\"JavaScript\" src=\"jscript/overlib_mini.js\"></script>\n";
       html_output += "<script language=\"JavaScript\" src=\"jscript/calendario.js\"></script>\n";
       
       html_output += "<fieldset><br><br><form name=\"scadenze\"><input type='hidden' name='action' value='report_scadenze_numero'><input type='hidden' name='operazione' value='visualizza_risultati'>";
      
       html_output += "<p>Dal numero: <input type='text' name='da_numero' size='10'>\n";
       html_output += "&nbsp; al numero: <input type='text' name='a_numero' size='10'>";
      
       html_output += "<br><br> Tipologia: " + getTipologieDD("0") + "&nbsp;Abbinato: " + getAbbinamentiDD("0");
       html_output += "<br><br>Prepara lista per invio E-mail: <input type='checkbox' name='per_email'>";
       html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
  
  
  
  
  public String getFormReportAbbonamenti() {
       String html_output="";
       html_output += "<script language=\"JavaScript\" src=\"jscript/overlib_mini.js\"></script>\n";
       html_output += "<script language=\"JavaScript\" src=\"jscript/calendario.js\"></script>\n";
       
       html_output += "<fieldset><br><br><form name=\"scadenze\"><input type='hidden' name='action' value='report_abbonamenti'><input type='hidden' name='operazione' value='visualizza_risultati'>";
      
       html_output += "<p>Dal giorno: <input type='text' name='da_giorno' size='10'><a href=\"javascript:show_calendar('scadenze.da_giorno');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>\n";
       html_output += "&nbsp; al giorno: <input type='text' name='a_giorno' size='10'><a href=\"javascript:show_calendar('scadenze.a_giorno');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>";
      
       html_output += "<br><br> Tipologia: " + getTipologieDD("0") + "&nbsp;Abbinato: " + getAbbinamentiDD("0");
       html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
  
  
    
  public String getFormReportRinnovi() {
       String html_output="";
       html_output += "<script language=\"JavaScript\" src=\"jscript/overlib_mini.js\"></script>\n";
       html_output += "<script language=\"JavaScript\" src=\"jscript/calendario.js\"></script>\n";
       
       html_output += "<fieldset><br><br><form name=\"scadenze\"><input type='hidden' name='action' value='report_rinnovi'><input type='hidden' name='operazione' value='visualizza_risultati'>";
      
       html_output += "<p>Dal giorno: <input type='text' name='da_giorno' size='10'><a href=\"javascript:show_calendar('scadenze.da_giorno');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>\n";
       html_output += "&nbsp; al giorno: <input type='text' name='a_giorno' size='10'><a href=\"javascript:show_calendar('scadenze.a_giorno');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>";
      
       html_output += "<br><br> Tipologia: " + getTipologieDD("0") + "&nbsp;Abbinato: " + getAbbinamentiDD("0");
       html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
  
  
    public String getFormReportNumeriSpeditiTipologia() {
       String html_output="";
       html_output += "<script language=\"JavaScript\" src=\"jscript/overlib_mini.js\"></script>\n";
       html_output += "<script language=\"JavaScript\" src=\"jscript/calendario.js\"></script>\n";
       
       html_output += "<fieldset><br><br><form name=\"numeri_spediti\"><input type='hidden' name='action' value='report_numeri_spediti_tipologia'><input type='hidden' name='operazione' value='visualizza_risultati'>";
      
       html_output += "<p>Dal giorno: <input type='text' name='da_giorno' size='10'><a href=\"javascript:show_calendar('scadenze.da_giorno');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>\n";
       html_output += "&nbsp; al giorno: <input type='text' name='a_giorno' size='10'><a href=\"javascript:show_calendar('scadenze.a_giorno');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>";
      
        html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
  
    public String getFormReportNumeriSpeditiCategoria() {
       String html_output="";
       html_output += "<script language=\"JavaScript\" src=\"jscript/overlib_mini.js\"></script>\n";
       html_output += "<script language=\"JavaScript\" src=\"jscript/calendario.js\"></script>\n";
       
       html_output += "<fieldset><br><br><form name=\"numeri_spediti\"><input type='hidden' name='action' value='report_numeri_spediti_categoria'><input type='hidden' name='operazione' value='visualizza_risultati'>";
      
       html_output += "<p>Dal giorno: <input type='text' name='da_giorno' size='10'><a href=\"javascript:show_calendar('scadenze.da_giorno');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>\n";
       html_output += "&nbsp; al giorno: <input type='text' name='a_giorno' size='10'><a href=\"javascript:show_calendar('scadenze.a_giorno');\" onMouseOver=\"window.status='Date Picker'; overlib('Clicca per scegliere la data'); return true;\" onMouseOut=\"window.status=''; nd(); return true;\"><img src='img/show-calendar.gif' width=24 height=22 border=0></a>";
      
       html_output += "<p><input type='submit' value='Cerca' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";

       return html_output;
   }
    
    
    
  public String getFormInserimentoComune() {
       String html_output="";
       
       html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='inserimento_comune'><input type='hidden' name='operazione' value='conferma_inserimento'><p>Nome Comune: <input type='text' name='descrizione_comune' size='20'> </p>";
       //html_output += "<p>Provincia :" + getDDFromQuery("SELECT id_provincia, nome_provincia from province", "id_provincia", "nome_provincia", "0") +  "</p>";
       html_output += "<p>" + getStatiRegioniProvinceDD("0") +  "</p>";
       html_output += "<p><input type='submit' value='Inserisci' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";
        // getStatiRegioniProvinceDD
       return html_output;
   }

  
   public String getFormInserimentoRegione() {
       String html_output="";
       
       html_output += "<fieldset><br><br><form><input type='hidden' name='action' value='inserimento_regione'><input type='hidden' name='operazione' value='conferma_inserimento'>";
       //html_output += "<p>Provincia :" + getDDFromQuery("SELECT id_provincia, nome_provincia from province", "id_provincia", "nome_provincia", "0") +  "</p>";
       html_output += "<p>Stato: " + getStatiDD("0") +  "</p>";
       html_output += "<p>Nome Regione: <input type='text' name='nome_regione' size='20'> </p>";
       html_output += "<p><input type='submit' value='Inserisci' ><input type='reset' value='Reset'></p></form><br><br></fieldset>";
        // getStatiRegioniProvinceDD
       return html_output;
   }
  
 
    public String InvioNewsletter(String Soggetto, String Messaggio ) {
        String html_output = "";
        String Default_Text =  "Seleziona...";
        try {
            Class.forName(DriverString);
            Connection cn = DriverManager.getConnection (ConnectionString);
        
            java.sql.Statement stmt = cn.createStatement();
            //String sql="SELECT id_tipologia, descrizione_tipologia from tipologie";
            ResultSet rs;
            
            String Destinatario[] = new String[1];
            
            rs = stmt.executeQuery("select email from abbonati where email <> '' and id_tipologia <> 8");
            Destinatario[1] = rs.getString("email");
              while (rs.next()) {
                html_output += InviaMail(Destinatario, Soggetto, Messaggio );
            }   
            stmt.close();
            rs.close();
            cn.close();
        }
            catch (Exception e) {
                html_output = showError(e);
            }
            return html_output;
    }
   
   
   
   public String RicercaScadenze (String Da_Giorno, String A_Giorno, String Id_Tipologia, String Id_Abbinamento, String Per_Email) {
      /*
       * 
       *
       *
       *
       *
       */
       
      String html_output="";
      
      String where_string = "";
      if (Id_Tipologia.compareTo("0") != 0) {
            where_string += " and abbonati.id_tipologia=" + Id_Tipologia;
      }
      

      if (Id_Abbinamento.compareTo("0") != 0) {
            where_string += " and abbonati.id_abbinamento = '" + Id_Abbinamento + "'";
      }
      
      //html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia" + where_string, "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
      //html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and data_scadenza >='" + Da_Giorno +"' and data_scadenza <= '" + A_Giorno +  "' " + where_string, "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
      //if (Per_Email.compareTo("on") !=0 ) {
      if (Per_Email != null ) {
            html_output += "<script language=\"JavaScript\" src=\"jscript/selectall.js\"></script>\n";
            html_output += "<form name=\"utenti_email\">";
            html_output += "<input type='hidden' name='action' value='invio_email'>";
            html_output += getCheckListFromQuery("1","select abbonati.email as EMail, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and email <> '' and data_scadenza >='" + Da_Giorno +"' and data_scadenza <= '" + A_Giorno +  "' " + where_string, "EMail");
            html_output += "<input type=\"radio\" name=\"selectall\"  onclick=\"selectAll(this.form,0);\">Seleziona Tutto";
            html_output += "<input type=\"radio\" name=\"selectall\"  onclick=\"selectAll(this.form,1);\">Inverti Selezione";
            html_output += "<p>Seleziona testo E-Mail: " + getEmailDD() + "</p>";
            
            html_output += "<p><input type='submit' value='Invia' ><input type='reset' value='Reset'></p>";
            html_output += "</form>";
      } else {
            //html_output += "<script language=\"JavaScript\" src=\"jscript/popup.js\"></script>\n";
            //html_output += "<script language=\"JavaScript\">";
            //html_output += "query_string =\"" + "select abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as Tipologia from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia  and data_scadenza >='" + Da_Giorno +"' and data_scadenza <= '" + A_Giorno +  "' " + where_string +  "\"";
            //html_output += "</script>";
            
            html_output += getCheckListFromQuery("0","select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento`, abbonati.telefono as `Tel.`, abbonati.cellulare as `Cell.`, abbonati.email  as `EMail` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia  and data_scadenza >='" + Da_Giorno +"' and data_scadenza <= '" + A_Giorno +  "' " + where_string, "ID");
            //CurrentQuery = "select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia  and data_scadenza >='" + Da_Giorno +"' and data_scadenza <= '" + A_Giorno +  "' " + where_string;
            //html_output += "<center><input type='button' value='Esporta per stampa' onclick=\"javascript:popUpDim('pdf?query=' + query_string,800,600)\"></center>";
            //html_output += "<p><form method='post' action='pdf'><input type='hidden' name='titolo' value='Scadenze abbonamenti, periodo dal " + Da_Giorno +" al " + A_Giorno +"'><input type='hidden' name='query' value=\"" + "select abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as Tipologia from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia  and data_scadenza >='" + Da_Giorno +"' and data_scadenza <= '" + A_Giorno +  "' " + where_string + "\"><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='submit' value='Esporta per stampa'></form>";
            html_output += "<p><form method='post' action='pdf'><input type='hidden' name='titolo' value='Scadenze abbonamenti, periodo dal " + Da_Giorno +" al " + A_Giorno +"'><input type='hidden' name='query' value=\"" + "select abbonati.nominativo as Nome,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, abbonati.data_scadenza as `Scad.`, abbonati.telefono as `Tel.`, abbonati.cellulare as `Cell.`, abbonati.email  as `EMail` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia  and data_scadenza >='" + Da_Giorno +"' and data_scadenza <= '" + A_Giorno +  "' " + where_string + "\"><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='submit' value='Esporta per stampa'></form>";
      }
      return html_output;
      //return where_string;
   }
   
   
   
   
   
   
   public String RicercaScadenzeNumero (String Da_Numero, String A_Numero, String Id_Tipologia, String Id_Abbinamento, String Per_Email) {
      /*
       * 
       *
       *
       *
       *
       */
       
      String html_output="";
      
      String where_string = "";
      if (Id_Tipologia.compareTo("0") != 0) {
            where_string += " and abbonati.id_tipologia=" + Id_Tipologia;
      }
      

      if (Id_Abbinamento.compareTo("0") != 0) {
            where_string += " and abbonati.id_abbinamento = '" + Id_Abbinamento + "'";
      }
      
      //html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia" + where_string, "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
      //html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and data_scadenza >='" + Da_Giorno +"' and data_scadenza <= '" + A_Giorno +  "' " + where_string, "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
      //if (Per_Email.compareTo("on") !=0 ) {
      if (Per_Email != null ) {
            html_output += "<script language=\"JavaScript\" src=\"jscript/selectall.js\"></script>\n";
            html_output += "<form name=\"utenti_email\">";
            html_output += "<input type='hidden' name='action' value='invio_email'>";
            html_output += getCheckListFromQuery("1","select abbonati.email as EMail, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and email <> '' and a_numero >='" + Da_Numero +"' and a_numero <= '" + A_Numero +  "' " + where_string, "EMail");
            html_output += "<input type=\"radio\" name=\"selectall\"  onclick=\"selectAll(this.form,0);\">Seleziona Tutto";
            html_output += "<input type=\"radio\" name=\"selectall\"  onclick=\"selectAll(this.form,1);\">Inverti Selezione";
            html_output += "<p>Seleziona testo E-Mail: " + getEmailDD() + "</p>";
            
            html_output += "<p><input type='submit' value='Invia' ><input type='reset' value='Reset'></p>";
            html_output += "</form>";
      } else {
            //html_output += "<script language=\"JavaScript\" src=\"jscript/popup.js\"></script>\n";
            //html_output += "<script language=\"JavaScript\">";
            //html_output += "query_string =\"" + "select abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as Tipologia from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia  and data_scadenza >='" + Da_Giorno +"' and data_scadenza <= '" + A_Giorno +  "' " + where_string +  "\"";
            //html_output += "</script>";
            
            html_output += getCheckListFromQuery("0","select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento`, abbonati.telefono as `Tel.`, abbonati.cellulare as `Cell.`, abbonati.email  as `EMail` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia  and a_numero >='" + Da_Numero +"' and a_numero <= '" + A_Numero +  "' " + where_string, "ID");
            //CurrentQuery = "select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia  and data_scadenza >='" + Da_Giorno +"' and data_scadenza <= '" + A_Giorno +  "' " + where_string;
            //html_output += "<center><input type='button' value='Esporta per stampa' onclick=\"javascript:popUpDim('pdf?query=' + query_string,800,600)\"></center>";
            //html_output += "<p><form method='post' action='pdf'><input type='hidden' name='titolo' value='Scadenze abbonamenti, periodo dal " + Da_Giorno +" al " + A_Giorno +"'><input type='hidden' name='query' value=\"" + "select abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as Tipologia from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia  and data_scadenza >='" + Da_Giorno +"' and data_scadenza <= '" + A_Giorno +  "' " + where_string + "\"><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='submit' value='Esporta per stampa'></form>";
            html_output += "<p><form method='post' action='pdf'><input type='hidden' name='titolo' value='Scadenze abbonamenti, periodo dal numero " + Da_Numero +" al numero " + A_Numero +"'><input type='hidden' name='query' value=\"" + "select abbonati.nominativo as Nome,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, abbonati.data_scadenza as `Scad.`,abbonati.telefono as `Tel.`, abbonati.cellulare as `Cell.`, abbonati.email  as `EMail` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia  and a_numero >='" + Da_Numero +"' and a_numero <= '" + A_Numero +  "' " + where_string + "\"><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='submit' value='Esporta per stampa'></form>";
            //4Debug
            //html_output += "select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia  and a_numero >='" + Da_Numero +"' and a_numero <= '" + A_Numero +  "' " + where_string;
      }
      return html_output;
      //return where_string;
   }
   
   
   
   
   
   
   
   
   public String ReportAbbonamenti (String Da_Giorno, String A_Giorno, String Id_Tipologia, String Id_Abbinamento) {
      /*
       * 
       *
       *
       *
       *
       */
       
      String html_output="";
      
      String where_string = "";
      if (Id_Tipologia.compareTo("0") != 0) {
            where_string += " and abbonati.id_tipologia=" + Id_Tipologia;
      }
      

      if (Id_Abbinamento.compareTo("0") != 0) {
            where_string += " and abbonati.id_abbinamento = '" + Id_Abbinamento + "'";
      }


      //html_output += getCheckListFromQuery("0","select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento`, abbonati.importo as `Importo` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and abbonati.id_tipologia <> 8 and abbonati.rinnovo='N' and data_registrazione >='" + Da_Giorno +"' and data_registrazione <= '" + A_Giorno +  "' " + where_string + " order by tipologie.descrizione_tipologia asc", "ID");
      
      html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nome,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia`, abbonati.importo as `Importo` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and abbonati.id_tipologia <> 8 and abbonati.rinnovo='N' and data_registrazione >='" + Da_Giorno +"' and data_registrazione <= '" + A_Giorno +  "' " + where_string + " order by tipologie.descrizione_tipologia asc", "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
      
      //html_output += "<p><form method='post' action='pdf'><input type='hidden' name='titolo' value='Nuovi abbonamenti, periodo dal " + Da_Giorno +" al " + A_Giorno +"'><input type='hidden' name='query' value=\"" + "select abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as Tipologia, abbonati.importo as Importo from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and abbonati.id_tipologia <> 8 and abbonati.rinnovo='N' and data_registrazione >='" + Da_Giorno +"' and data_registrazione <= '" + A_Giorno +  "' " + where_string + " order by tipologie.descrizione_tipologia asc\"><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='submit' value='Esporta per stampa'></form>";
     
      return html_output;
      //return where_string;
   }
   
   
   
   public String ReportRinnovi (String Da_Giorno, String A_Giorno, String Id_Tipologia, String Id_Abbinamento) {
      /*
       * 
       *
       *
       *
       *
       */
       
          String html_output="";
      
      String where_string = "";
      if (Id_Tipologia.compareTo("0") != 0) {
            where_string += " and abbonati.id_tipologia=" + Id_Tipologia;
      }
      

      if (Id_Abbinamento.compareTo("0") != 0) {
            where_string += " and abbonati.id_abbinamento = '" + Id_Abbinamento + "'";
      }


      //html_output += getCheckListFromQuery("0","select abbonati.id_abbonato as ID, abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia di abbonamento`, abbonati.importo as `Importo` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and abbonati.id_tipologia <> 8 and abbonati.rinnovo='S' and data_decorrenza >='" + Da_Giorno +"' and data_decorrenza <= '" + A_Giorno +  "' " + where_string + " order by tipologie.descrizione_tipologia asc", "ID");
      //html_output += "<p><form method='post' action='pdf'><input type='hidden' name='titolo' value='Abbonamenti rinnovati, periodo dal " + Da_Giorno +" al " + A_Giorno +"'><input type='hidden' name='query' value=\"" + "select abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as Tipologia, abbonati.importo as Importo from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and abbonati.id_tipologia <> 8 and abbonati.rinnovo='S' and data_decorrenza >='" + Da_Giorno +"' and data_decorrenza <= '" + A_Giorno +  "' " + where_string + " order by tipologie.descrizione_tipologia asc\"><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='submit' value='Esporta per stampa'></form>";
     
      html_output += getTableFromQuery("select abbonati.id_abbonato as ID, abbonati.nominativo as Nome,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as `Tipologia`, abbonati.importo as `Importo` from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and abbonati.id_tipologia <> 8 and abbonati.rinnovo='S' and data_decorrenza >='" + Da_Giorno +"' and data_decorrenza <= '" + A_Giorno +  "' " + where_string + " order by tipologie.descrizione_tipologia asc", "ID", "index.jsp?action=modifica_abbonato&operazione=modifica&id_abbonato=", "index.jsp?action=modifica_abbonato&operazione=elimina&id_abbonato=");
      
      return html_output;
      //return where_string;
   }
   
   
   
   
   
    public String ReportSpeditiCategoria (String Da_Giorno, String A_Giorno) {
      /*
       * 
       *
       *
       *
       *
       */
       
      String html_output="";
      
      String where_string = "";



      html_output += getCheckListFromQuery("0","SELECT numeri.identificativo_numero as Numero,numeri.data as Data, categorie.descrizione_categoria as Categoria, COUNT( categorie.descrizione_categoria ) as Spediti FROM numeri, numeri_abbonati, abbonati, categorie WHERE abbonati.id_categoria = categorie.id_categoria AND numeri_abbonati.id_abbonato = abbonati.id_abbonato AND numeri_abbonati.id_numero = numeri.id_numero AND numeri.data >= '" + Da_Giorno + "' and numeri.data <= '" + A_Giorno + "' GROUP BY categorie.descrizione_categoria, numeri.identificativo_numero, numeri.data", "ID");
      html_output += "<p><form method='post' action='pdf'><input type='hidden' name='titolo' value='Report numeri Spediti'><input type='hidden' name='query' value=\"" + "SELECT numeri.identificativo_numero as Numero,numeri.data as Data, categorie.descrizione_categoria as Categoria, COUNT( categorie.descrizione_categoria ) as Spediti FROM numeri, numeri_abbonati, abbonati, categorie WHERE abbonati.id_categoria = categorie.id_categoria AND numeri_abbonati.id_abbonato = abbonati.id_abbonato AND numeri_abbonati.id_numero = numeri.id_numero AND numeri.data >= '" + Da_Giorno + "' and numeri.data <= '" + A_Giorno + "' GROUP BY categorie.descrizione_categoria, numeri.identificativo_numero, numeri.data\"><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='submit' value='Esporta per stampa'></form>";
     
      return html_output;
      //return where_string;
   }
   
    
      public String ReportSpeditiTipologia (String Da_Giorno, String A_Giorno) {
      /*
       * 
       *
       *
       *
       *
       */
       
      String html_output="";
      
      String where_string = "";



      html_output += getCheckListFromQuery("0","SELECT numeri.identificativo_numero as Numero,numeri.data as Data, tipologie.descrizione_tipologia as Tipologia, COUNT( tipologie.descrizione_tipologia ) as Spediti FROM numeri, numeri_abbonati, abbonati, tipologie WHERE abbonati.id_tipologia = tipologie.id_tipologia AND numeri_abbonati.id_abbonato = abbonati.id_abbonato AND numeri_abbonati.id_numero = numeri.id_numero AND numeri.data >= '" + Da_Giorno + "' and numeri.data <= '" + A_Giorno + "' GROUP BY tipologie.descrizione_tipologia, numeri.identificativo_numero, numeri.data", "ID");
      html_output += "<p><form method='post' action='pdf'><input type='hidden' name='titolo' value='Report numeri Spediti'><input type='hidden' name='query' value=\"" + "SELECT numeri.identificativo_numero as Numero,numeri.data as Data, tipologie.descrizione_tipologia as Tipologia, COUNT( tipologie.descrizione_tipologia ) as Spediti FROM numeri, numeri_abbonati, abbonati, tipologie WHERE abbonati.id_tipologia = tipologie.id_tipologia AND numeri_abbonati.id_abbonato = abbonati.id_abbonato AND numeri_abbonati.id_numero = numeri.id_numero AND numeri.data >= '" + Da_Giorno + "' and numeri.data <= '" + A_Giorno + "' GROUP BY tipologie.descrizione_tipologia, numeri.identificativo_numero, numeri.data\"><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='submit' value='Esporta per stampa'></form>";
     
      return html_output;
      //return where_string;
   }
   
   
   
   
   
  public String getStatisticheSlow(String sql) {
       String html_output="";
       try {
           
           
           Class.forName(DriverString);
           Connection cn = DriverManager.getConnection (ConnectionString);
           java.sql.Statement stmt = cn.createStatement();                
           //String sql="select abbonati.id_abbonato , abbonati.nome , abbonati.cognome , abbonati.indirizzo , abbonati.cap , citta.id_citta, citta.nome_citta , province.id_provincia, province.sigla_provincia , tipologie.id_tipologia, tipologie.descrizione_tipologia from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and abbonati.id_abbonato=" + ID_Abbonato;
           ResultSet rs = stmt.executeQuery(sql);
           ResultSetMetaData rsm = rs.getMetaData();
           html_output += "<fieldset><br><table border=1><tr><td><strong>" + rsm.getColumnName(1) +"</strong></td><td><strong>" + rsm.getColumnName(2) + "</strong></td></tr>";
           while (rs.next()) {
               html_output += "<tr><td>" + rs.getString(1) +"</td><td align=left>";
               //for (int i = 0; i< rs.getInt(2) ;  i++ ) {
               html_output += "<img src=\"img/progressione.gif\" width=" + rs.getInt(2)/5 +" height=10>";
               //}
               html_output += "(" + rs.getInt(2) + ")";
               html_output += "</td></tr>";
           }
           stmt.close();
           rs.close();
           cn.close();
           html_output += "</table><br></fieldset>";
       } catch (Exception e) {
                html_output = showError(e);
       }
           
       return html_output;
   }
   

  
  
  
  public String getStatistiche (String sql) {
       StringBuffer html_output = new StringBuffer();
       try {
           
           
           Class.forName(DriverString);
           Connection cn = DriverManager.getConnection (ConnectionString);
           java.sql.Statement stmt = cn.createStatement();                
           //String sql="select abbonati.id_abbonato , abbonati.nome , abbonati.cognome , abbonati.indirizzo , abbonati.cap , citta.id_citta, citta.nome_citta , province.id_provincia, province.sigla_provincia , tipologie.id_tipologia, tipologie.descrizione_tipologia from abbonati, citta, province, tipologie where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and abbonati.id_abbonato=" + ID_Abbonato;
           ResultSet rs = stmt.executeQuery(sql);
           ResultSetMetaData rsm = rs.getMetaData();
           html_output.append("<fieldset><br><table border=1><tr><td><strong>" + rsm.getColumnName(1) +"</strong></td><td><strong>" + rsm.getColumnName(2) + "</strong></td></tr>");
           while (rs.next()) {
               html_output.append("<tr><td>" + rs.getString(1) +"</td><td align=left>");
               //for (int i = 0; i< rs.getInt(2) ;  i++ ) {
               html_output.append("<img src=\"img/progressione.gif\" width=" + rs.getInt(2)/5 +" height=10>");
               //}
               html_output.append("(" + rs.getInt(2) + ")");
               html_output.append("</td></tr>");
           }
           stmt.close();
           rs.close();
           cn.close();
           html_output.append("</table><br></fieldset>");
           html_output.append("<p><form method='post' action='pdf'><input type='hidden' name='titolo' value='Export Tabella'><input type='hidden' name='query' value=\"" + sql  +"\"><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='submit' value='Esporta per stampa'></form>");
       } catch (Exception e) {
                html_output.delete(1, html_output.length());
                html_output.append(showError(e));
       }
           
       return html_output.toString();
   }
  
  
  
  
  
  public String InviaMail (String[] Destinatari, String Subject, String Messaggio) {
      String html_output = "";
      String ServerAddress = getProp("smtp_server");
      String ServerPort = getProp("smtp_port");
      String Mittente = getProp("sender_address");
      //new Network.SendMail() invio_mail;
      Network.SendMail invio_mail = new Network.SendMail();
      invio_mail.setMailServer(ServerAddress);
      invio_mail.setSender(Mittente);
      for (int i = 0; i < Destinatari.length; i++) {
        try {
              html_output += invio_mail.InviaMail(Destinatari[i], Subject, Messaggio) + "<br>";
            //html_output = invio_mail.InviaMailAuth(Destinatario, Subject, Messaggio,"user","pass");
        } catch (Exception e) {
              html_output += e.getMessage() + "<br>";
        }
      }
      return html_output;
  }
  
  
  
  
  
  
  public String InviaMailFromID (String[] Destinatari, String Id_Email) {
      String html_output = "";
      String ServerAddress = getProp("smtp_server");
      String ServerPort = getProp("smtp_port");
      String Mittente = getProp("sender_address");
      String Subject = "";
      String Messaggio = "";
      
      try {
               Class.forName(DriverString);
                //apertura connessione
                //Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.0.3/test?user=test&password=test");
                // Connection cn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://ormt189:1433;DatabaseName=Procedure_rmreps;user=test;password=test");
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="SELECT subject, messaggio from email_predefinite where id_email = " + Id_Email;
                ResultSet rs = stmt.executeQuery(sql);
                if(rs.next()) {
                    Subject = rs.getString(1);
                    Messaggio = rs.getString(2);
                } 
                
                stmt.close();
                rs.close();
                cn.close();
           } catch (Exception e) {
               
          }
      
      //new Network.SendMail() invio_mail;
      Network.SendMail invio_mail = new Network.SendMail();
      invio_mail.setMailServer(ServerAddress);
      invio_mail.setSender(Mittente);
      
      for (int i = 0; i < Destinatari.length; i++) {
        html_output += "<li>Invio messaggio a " + Destinatari[i] + ": ";
        try {
              html_output += invio_mail.InviaMail(Destinatari[i], Subject, Messaggio) + "<br>";
            //html_output = invio_mail.InviaMailAuth(Destinatario, Subject, Messaggio,"klimt","bg520ag");
        } catch (Exception e) {
              html_output += e.getMessage();
        }
      }
      return html_output;
  }
  
  public String getAlbero() {
      
        /*Restituisce il codice HTML per la visualizzazione dell'albero delle operazioni
         */
         
        String Albero = "<fieldset><link rel='StyleSheet' href='dtree.css'' type='text/css'' />\n<script type='text/javascript' src='dtree.js'>\n</script><SCRIPT LANGUAGE='JavaScript'>\n var i = 0; <!-- \n d = new dTree('d'); \n d.add(0,-1,'SiteMenu'); \n";
        Albero = Albero + "d.add(1,0,'Ricerca','');\n";
        Albero = Albero + "d.add(111,1,'Ricerca per Comune','index.jsp?action=ricerca_comune');\n";
        Albero = Albero + "d.add(112,1,'Ricerca per Tipologia','index.jsp?action=ricerca_tipologia');\n";
        Albero = Albero + "d.add(113,1,'Ricerca per Categoria','index.jsp?action=ricerca_categoria');\n";
        Albero = Albero + "d.add(114,1,'Ricerca per Provincia','index.jsp?action=ricerca_provincia');\n";
        Albero = Albero + "d.add(115,1,'Ricerca per Regione','index.jsp?action=ricerca_regione');\n";
        Albero = Albero + "d.add(116,1,'Ricerca Avanzata','index.jsp?action=ricerca_avanzata');\n";
        
        Albero = Albero + "d.add(2,0,'Reportistica','');\n";
        Albero = Albero + "d.add(221,2,'Report per Comune','index.jsp?action=report_comune');\n";
        Albero = Albero + "d.add(222,2,'Report per Tipologia','index.jsp?action=report_tipologia');\n";
        Albero = Albero + "d.add(223,2,'Report per Categoria','index.jsp?action=report_categoria');\n";
        Albero = Albero + "d.add(224,2,'Report per Provincia','index.jsp?action=report_provincia');\n";
        Albero = Albero + "d.add(225,2,'Report per Regione','index.jsp?action=report_regione');\n";
        Albero = Albero + "d.add(226,2,'Scadenze','');\n";
        Albero = Albero + "d.add(2261,226,'Ricerca Scadenze per data','index.jsp?action=report_scadenze');\n";
        Albero = Albero + "d.add(2262,226,'Ricerca Scadenze per numero','index.jsp?action=report_scadenze_numero');\n";
        Albero = Albero + "d.add(227,2,'Nuovi abbonamenti','');\n";
        Albero = Albero + "d.add(2271,227,'Report nuovi abbonamenti','index.jsp?action=report_abbonamenti');\n";
        Albero = Albero + "d.add(2272,227,'Report rinnovi','index.jsp?action=report_rinnovi');\n";
        Albero = Albero + "d.add(228,2,'Numeri','');\n";
        Albero = Albero + "d.add(2281,228,'Numeri Spediti per Categoria','index.jsp?action=report_numeri_spediti_categoria');\n";
        Albero = Albero + "d.add(2282,228,'Numeri Spediti per Tipologia','index.jsp?action=report_numeri_spediti_tipologia');\n";
        Albero = Albero + "d.add(2283,228,'Report avanzato','');\n";
        
        
        Albero = Albero + "d.add(3,0,'Gestione','');\n";
        
        Albero = Albero + "d.add(331,3,'Gestione Abbonati','');\n";
        Albero = Albero + "d.add(3311,331,'Inserimento abbonato','index.jsp?action=inserimento_abbonato');\n";
        Albero = Albero + "d.add(3312,331,'Modifica abbonato','index.jsp?action=modifica_abbonato');\n";
        
        Albero = Albero + "d.add(337,3,'Gestione Numeri','');\n";
        Albero = Albero + "d.add(3371,337,'Inserimento Numero','index.jsp?action=inserimento_numero');\n";
        Albero = Albero + "d.add(3372,337,'Lista numeri','index.jsp?action=modifica_numero');\n";
        
        
        Albero = Albero + "d.add(332,3,'Gestione Comuni','');\n";
        Albero = Albero + "d.add(3321,332,'Inserimento Comune','index.jsp?action=inserimento_comune');\n";
        Albero = Albero + "d.add(3322,332,'Modifica Comune','index.jsp?action=modifica_comune');\n";
        
        Albero = Albero + "d.add(333,3,'Gestione Tipologie','');\n";
        Albero = Albero + "d.add(3331,333,'Inserimento Tipologia','index.jsp?action=inserimento_tipologia');\n";
        Albero = Albero + "d.add(3332,333,'Modifica Tipologia','index.jsp?action=modifica_tipologia');\n";
        
        Albero = Albero + "d.add(334,3,'Gestione Province','');\n";
        Albero = Albero + "d.add(3341,334,'Inserimento Provincia','index.jsp?action=inserimento_provincia');\n";
        Albero = Albero + "d.add(3342,334,'Modifica Provincia','index.jsp?action=modifica_provincia');\n";
        
        Albero = Albero + "d.add(335,3,'Gestione Regioni','');\n";
        Albero = Albero + "d.add(3351,335,'Inserimento Regione','index.jsp?action=inserimento_regione');\n";
        Albero = Albero + "d.add(3352,335,'Modifica Regione','index.jsp?action=modifica_regione');\n";
        
        Albero = Albero + "d.add(336,3,'Gestione Stati','');\n";
        Albero = Albero + "d.add(3361,336,'Inserimento Stato','index.jsp?action=inserimento_stato');\n";
        Albero = Albero + "d.add(3362,336,'Modifica Stato','index.jsp?action=modifica_stato');\n";       
        
        Albero = Albero + "d.add(330,3,'Gestione Abbinamenti','');\n";
        Albero = Albero + "d.add(3301,330,'Inserimento Abbinamento','index.jsp?action=inserimento_abbinamento');\n";
        Albero = Albero + "d.add(3302,330,'Modifica Abbinamento','index.jsp?action=modifica_abbinamento');\n"; 
        
        
        Albero = Albero + "d.add(338,3,'Gestione Categorie','');\n";
        Albero = Albero + "d.add(3381,338,'Inserimento Categoria','index.jsp?action=inserimento_categoria');\n";
        Albero = Albero + "d.add(3382,338,'Modifica Categoria','index.jsp?action=modifica_categoria');\n";
        
        Albero = Albero + "d.add(339,3,'Gestione Newsletter','');\n";
        Albero = Albero + "d.add(3391,339,'Invia Messaggio','index.jsp?action=invio_newsletter');\n";        
        
        Albero = Albero + "d.add(4,0,'Configurazione','');\n";
        Albero = Albero + "d.add(441,4,'Configurazione Email','');\n";
        Albero = Albero + "d.add(4411,441,'Configurazione Server','index.jsp?action=settaggi_email');\n";
        Albero = Albero + "d.add(4412,441,'EMail Predefinite','');\n";
        Albero = Albero + "d.add(44121,4412,'Aggiungi Email','index.jsp?action=inserimento_email');\n";
        Albero = Albero + "d.add(44122,4412,'Modifica Email','index.jsp?action=modifica_email');\n";
               
        
        Albero = Albero + "document.write(d);//--></script></fieldset>";
   return Albero;
   }
   
   public String getHeader() {
        String html_header="";
        
        //html_header = html_header + "<table width='100%' style='font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 11px; color: #666; white-space: nowrap;'><tr><td><img src='img/logo.png'></td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td colspan='3'><fieldset>" + getProp("slogan") +"&nbsp;&nbsp;<strong>Versione "+ getProp("versione") + "</strong></fieldset></td></tr></table>";
        html_header = html_header + "<table width='100%' style='font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 11px; color: #666; white-space: nowrap;'><tr><td><img src='img/logo.png'></td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td colspan='3'><fieldset>" + getProp("slogan") +"&nbsp;&nbsp;<strong>Versione 1.1.3 - 09/11/2006</strong></fieldset></td></tr></table>";  
                

        
        //ariellab_banner_468_60.png
        
        return html_header;
    }
  
   public String getFooter() {
        String html_output="";
        
        //html_output += "<fieldset><table width='100%' style='font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 11px; color: #666; white-space: nowrap;'><tr><td colspan='3'><fieldset>CopyRight " + getProp("copyright") +"</fieldset></td></tr></table></fieldset>";
        html_output += "<fieldset><table width='100%' style='font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 11px; color: #666; white-space: nowrap;'><tr><td colspan='3'><fieldset>Copyright &copy; 2006 <a href='http://andreafortuna.wordpress.com' target='_blank'>Andrea Fortuna</a></fieldset></td></tr></table></fieldset>";
        return html_output;
    }
   
   public String getRight() {
        String html_output="";
        html_output += "<script language=\"JavaScript\" src=\"jscript/popup.js\"></script>\n";
        html_output += "<table style='font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 11px; color: #666; white-space: nowrap;' border =1 width=100%>";

        html_output += "<tr><td><center><strong>Utility</strong></center></td></tr>";
        html_output += "<tr><td><A HREF=\"javascript:popUpDim('tools/calc.htm',177,300)\">Calcolatrice</a></td></tr><tr><td><A HREF=\"javascript:popUpDim('tools/convertitore.html',380,210)\">Convertitore</a></td></tr>";
        html_output +="</table>";
        
        html_output += "<table style='font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 11px; color: #666; white-space: nowrap;' border =1 width=100%>";
        html_output += "<tr><td><center><strong>System Tools</strong></center></td></tr>";
        html_output += "<tr><td><A HREF=\"javascript:popUp('tools/ottimizza.jsp')\">Ottimizza DB</a></td></tr><tr><td><A HREF=\"javascript:popUpDim('tools/backup.jsp',560,200)\">Backup DB</a></td></tr>";
        html_output +="</table>";
        html_output += "<table style='font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 11px; color: #666; white-space: nowrap;' border =1 width=100%>";
        html_output += "<tr><td><center><strong>Informazioni</strong></center></td></tr>";
        html_output += "<tr><td><A HREF=\"javascript:popUpDim('tools/license.html',640,400)\">Licenza d'uso</a></td></tr>";        
        html_output += "<tr><td><A HREF=\"javascript:popUpDim('tools/ChangeLog.html',640,400)\">ChangeLog</a></td></tr>";        
        html_output +="</table>";
        
        html_output += "<br><br><center><fieldset style='font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 11px; color: #666; white-space: nowrap;'><img src='img/tomcat.jpg'><img src='img/mysql.jpg'></fieldset></center>"  ;
       

        
        //ariellab_banner_468_60.png
        
        return html_output;
    }
   
   public String getProp(String Prop) {
          String properties= "";
           try {
               Class.forName(DriverString);
                //apertura connessione
                //Connection cn = DriverManager.getConnection("jdbc:mysql://192.168.0.3/test?user=test&password=test");
                // Connection cn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://ormt189:1433;DatabaseName=Procedure_rmreps;user=test;password=test");
                Connection cn = DriverManager.getConnection (ConnectionString);
                java.sql.Statement stmt = cn.createStatement();                
                String sql="SELECT " + Prop + " from siteoptions";
                ResultSet rs = stmt.executeQuery(sql);
                if(rs.next()) {
                    properties = rs.getString(1);
                } else {
                    properties = "Not Found";
                }
                stmt.close();
                rs.close();
                cn.close();
           } catch (Exception e) {
               
           }
          return properties;
    }
   
    public String getDDFromQuery(String sql, String CampoID,String CampoDescrizione, String Default_ID ) {
        String html_output = "";
        String Default_Text =  "Seleziona...";
        try {
            Class.forName(DriverString);
            Connection cn = DriverManager.getConnection (ConnectionString);
        
            java.sql.Statement stmt = cn.createStatement();
            //String sql="SELECT id_tipologia, descrizione_tipologia from tipologie";
            ResultSet rs;
            
            if (Default_ID != "0") {
                rs = stmt.executeQuery(sql + " where " + CampoID + "=" + Default_ID);
                if (rs.next()) {
                    Default_Text = "*" + rs.getString(CampoDescrizione) + "*";
                }
            }
            
            rs = stmt.executeQuery(sql);
            
            html_output = html_output + "<SELECT id='" + CampoID + "' name='" + CampoID + "'>";
            html_output += "<option value=" + Default_ID +">" + Default_Text;
            while (rs.next()) {
                html_output += "<option value=" + rs.getString(CampoID) + ">" + rs.getString(CampoDescrizione) + "</option>";
            }   
            html_output += "</SELECT>";
            stmt.close();
            rs.close();
            cn.close();
        }
            catch (Exception e) {
                html_output = showError(e);
            }
            return html_output;
    }
   
   public String getTableFromQuery (String sql, String CampoID, String ModificaURL, String CancellaURL) {
       //String html_output = "<script type=\"text/javascript\">\nfunction conferma(ID) {\nvar answer = confirm(\"Sei sicuro di voler eliminare il record?\");\n if (answer){\nwindow.location = \"" + CancellaURL + "\"+ID;\n} else {\n alert(\"Azione Annullata.\"); \n }\n}\n</script>";
       StringBuffer html_output = new StringBuffer();
       html_output.append("<fieldset><br><table class=\"elenchi\">");
       try {
            Class.forName(DriverString); 
            Connection cn=DriverManager.getConnection(ConnectionString); 
            java.sql.Statement stmt = cn.createStatement();
            //String sql=Query;
            ResultSet rs = stmt.executeQuery(sql);
            
            ResultSetMetaData rsm = rs.getMetaData();
            int col = rsm.getColumnCount();
            //System.out.print(col);
            html_output.append("<tr>");
            for(int i=1; i<=col; i++) {
                //columnNames.add(rsm.getColumnName(i));
                html_output.append("<th style=\"font-size:10px;\" ><STRONG>" + rsm.getColumnName(i) + "</strong></th>");
                 //System.out.print(rsm.getColumnName(i));
            }
            html_output.append("</tr>");
            // Read the data
            while(rs.next()) {
                //ArrayList row = new ArrayList();
                //data.add(row);
                html_output.append("<tr>");
                for(int j=1; j<=col; j++) {
                    // Here is the tricky part which I did not figure yet. For now, I am reading in all as Strings.
                   // row.add(rs.getObject(j).toString());
                    //html_output += "<td>" + rs.getObject(j).toString() + "</td>";
                    

                    //html_output.append("<td>" + rs.getString(j) + "</td>");
                    
                    
                    if (rs.getString(j).length()>20) {
                        //html_output.append("<td onmouseover=\"return overlib('" + rs.getString(j).replace("'", "`") + "', LEFT, CAPTION,'Testo Completo');\" onmouseout=\"return nd();\">" + rs.getString(j).substring(0, 19) + "...</td>");
                        html_output.append("<td style=\"font-size:9px;\" onmouseover=\"return overlib('" + rs.getString(j).replace("'", "`").replace("\"","`") + "', CAPTION,'Testo Completo');\" onmouseout=\"return nd();\"><i>" + rs.getString(j).substring(0, 19) + "...</i></td>\n");
                    } else {
                        html_output.append("<td style=\"font-size:9px;\">" + rs.getString(j) + "</td>");
                    }
                    
                }
                
                html_output.append("<td><a href='" + ModificaURL + rs.getInt(CampoID) + "'> <img src='img/modifica.png' alt='Modifica'> </a></td>");               
                //html_output += "<td>" + "<img src='img/elimina.png' alt='Elimina' onclick='conferma(\"" + rs.getInt(CampoID) +"\")'> </a></td>";
                html_output.append("<td>" + "<img src='img/elimina.png' alt='Elimina' onclick='if (confirm(\"Sei sicuro di voler eliminare il record?\")){window.location = \"" + CancellaURL + rs.getInt(CampoID)+ "\";} else { alert(\"Azione Annullata.\");}'> </a></td>\n");
                html_output.append("<tr>");
            }
            html_output.append("</table><br></fieldset>");
            html_output.append("<p><form method='post' action='pdf'><input type='hidden' name='titolo' value='Export Tabella'><input type='hidden' name='query' value=\"" + sql  +"\"><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='submit' value='Esporta per stampa'></form>");
            rs.close();
            stmt.close();
            cn.close();
        } catch (Exception e) {
            html_output.delete(1, html_output.length());
                html_output.append(showError(e));
        }
        return html_output.toString();       
   }
  

   
  public String getListaNumeri () {
       //String html_output = "<script type=\"text/javascript\">\nfunction conferma(ID) {\nvar answer = confirm(\"Sei sicuro di voler eliminare il record?\");\n if (answer){\nwindow.location = \"" + CancellaURL + "\"+ID;\n} else {\n alert(\"Azione Annullata.\"); \n }\n}\n</script>";
       String html_output = "";
       html_output +="<fieldset><br><table class=\"elenchi\">";
       try {
            Class.forName(DriverString); 
            Connection cn=DriverManager.getConnection(ConnectionString); 
            java.sql.Statement stmt = cn.createStatement();
            //String sql=Query;
            ResultSet rs = stmt.executeQuery("select id_numero as ID, identificativo_numero as Numero, data as Data, descrizione as Descrizione from numeri");
            
            ResultSetMetaData rsm = rs.getMetaData();
            int col = rsm.getColumnCount();
            //System.out.print(col);
            html_output += "<tr>";
            for(int i=1; i<=col; i++) {
                //columnNames.add(rsm.getColumnName(i));
                html_output += "<th style=\"font-size:10px;\" ><STRONG>" + rsm.getColumnName(i) + "</strong></th>";
                 //System.out.print(rsm.getColumnName(i));
            }
            html_output += "</tr>";
            // Read the data
            while(rs.next()) {
                //ArrayList row = new ArrayList();
                //data.add(row);
                html_output += "<tr>";
                for(int j=1; j<=col; j++) {
                    // Here is the tricky part which I did not figure yet. For now, I am reading in all as Strings.
                   // row.add(rs.getObject(j).toString());
                    //html_output += "<td>" + rs.getObject(j).toString() + "</td>";
                    html_output += "<td style=\"font-size:10px;\" >" + rs.getString(j) + "</td>";
                }
                
                html_output += "<td valign=\"top\"><a href='index.jsp?action=modifica_numero&operazione=visualizza&id_numero=" + rs.getInt("ID") + "'> <img src='img/visualizza.png' alt='Visualizza'> </a></td>";               
                //html_output += "<td><a href='id_numero=" + rs.getInt("ID") + "'> <img src='img/stampa.png' alt='Stampa'> </a></td>";    
                //html_output += "<td valign=\"top\"><form method='post' action='pdf'><input type='hidden' name='titolo' value='Lista spedizioni abbonamenti, numero " + rs.getString("Numero") + "'><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='hidden' name='query' value=\"" + "select abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, tipologie.descrizione_tipologia as Tipologia from abbonati, citta, province, tipologie, numeri_abbonati where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and numeri_abbonati.id_abbonato = abbonati.id_abbonato and numeri_abbonati.id_numero =" + rs.getString("ID") + "\"><INPUT TYPE=\"IMAGE\" SRC=\"img/stampa.png\" ALT=\"Stampa\" BORDER=\"0\"></form></td>";
                html_output += "<td valign=\"top\"><form method='post' action='pdf'><input type='hidden' name='titolo' value='Lista spedizioni abbonamenti, numero " + rs.getString("Numero") + "'><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='hidden' name='query' value=\"" + "select abbonati.nominativo as Nome,abbonati.indirizzo as `Ind.zzo`, abbonati.riferimento as `Rif.`, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as `Prov.`, regioni.nome_regione as Regione, stati.nome_stato as Stato, abbonati.copie as Copie, abbonati.data_scadenza as `Scad.`  from abbonati, citta, province, tipologie, numeri_abbonati, regioni, stati where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and province.id_regione = regioni.id_regione and regioni.id_stato = stati.id_stato and abbonati.id_tipologia = tipologie.id_tipologia and numeri_abbonati.id_abbonato = abbonati.id_abbonato and numeri_abbonati.id_numero =" + rs.getString("ID") + " order by copie desc, cap asc\"><INPUT TYPE=\"IMAGE\" SRC=\"img/pdf.gif\" ALT=\"Salva la lista in PDF\" BORDER=\"0\"></form></td>";
                
                //Test
                html_output += "<td valign=\"top\"><form method='post' action='ExportXLS'><input type='hidden' name='titolo' value='Lista spedizioni abbonamenti, numero " + rs.getString("Numero") + "'><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='hidden' name='query' value=\"" + "select abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.riferimento as Riferimento, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, regioni.nome_regione as Regione, stati.nome_stato as Stato, abbonati.copie as Copie, abbonati.data_scadenza as Scadenza  from abbonati, citta, province, tipologie, numeri_abbonati, regioni, stati where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and province.id_regione = regioni.id_regione and regioni.id_stato = stati.id_stato and abbonati.id_tipologia = tipologie.id_tipologia and numeri_abbonati.id_abbonato = abbonati.id_abbonato and numeri_abbonati.id_numero =" + rs.getString("ID") + " order by copie desc, cap asc\"><INPUT TYPE=\"IMAGE\" SRC=\"img/xls.gif\" ALT=\"Salva la lista in XLS\" BORDER=\"0\"></form></td>";
                
                
                
                //html_output += "<td valign=\"top\"><div style=\"visibility:hidden;\"><form name=form" + rs.getRow() +" method='post' action='pdf'><input type='hidden' name='titolo' value='Lista spedizioni abbonamenti, numero " + rs.getString("Numero") + "'><input type='hidden' name='driverstring' value='" + getDriverString() +"'><input type='hidden' name='connectionstring' value='" + getConnectionString() +"'><input type='hidden' name='query' value=\"" + "select abbonati.nominativo as Nominativo,abbonati.indirizzo as Indirizzo, abbonati.cap as CAP, citta.nome_citta as Comune, province.sigla_provincia as Provincia, abbonati.copie as Copie from abbonati, citta, province, tipologie, numeri_abbonati where abbonati.id_citta = citta.id_citta and citta.id_provincia = province.id_provincia and abbonati.id_tipologia = tipologie.id_tipologia and numeri_abbonati.id_abbonato = abbonati.id_abbonato and numeri_abbonati.id_numero =" + rs.getString("ID") + "\"></form></div><IMG SRC=\"img/stampa.png\" ALT=\"Stampa\" onclick=\"javascript:document.form" + rs.getRow() +".submit()\"></td>";
                html_output += "<td valign=\"top\">" + "<img src='img/elimina.png' alt='Elimina' onclick='if (confirm(\"Sei sicuro di voler eliminare il record?\")){window.location = \"index.jsp?action=modifica_numero&operazione=elimina&id_numero=" + rs.getInt("ID")+ "\";} else { alert(\"Azione Annullata.\");}'> </a></td>\n";
                html_output += "<tr>";
            }
            html_output += "</table><br></fieldset>";
            rs.close();
            stmt.close();
            cn.close();
        } catch (Exception e) {
            html_output = showError(e);
        }
        return html_output;       
   } 
   
   
   
   
   
   
   
   
   
   
   
   
   
  public String getCheckListFromQuery (String Checks,String sql, String CampoID) {
       //String html_output = "<script type=\"text/javascript\">\nfunction conferma(ID) {\nvar answer = confirm(\"Sei sicuro di voler eliminare il record?\");\n if (answer){\nwindow.location = \"" + CancellaURL + "\"+ID;\n} else {\n alert(\"Azione Annullata.\"); \n }\n}\n</script>";
       StringBuffer html_output = new StringBuffer();
       html_output.append("<fieldset><br><table class=\"elenchi\">");
       try {
            Class.forName(DriverString); 
            Connection cn=DriverManager.getConnection(ConnectionString); 
            java.sql.Statement stmt = cn.createStatement();
            //String sql=Query;
            ResultSet rs = stmt.executeQuery(sql);
            
            ResultSetMetaData rsm = rs.getMetaData();
            int col = rsm.getColumnCount();
            //System.out.print(col);
            html_output.append("<tr><td></td>");
            for(int i=1; i<=col; i++) {
                //columnNames.add(rsm.getColumnName(i));
                html_output.append("<th><STRONG>" + rsm.getColumnName(i) + "</strong></th>");
                 //System.out.print(rsm.getColumnName(i));
            }
            html_output.append("</tr>");
            // Read the data
            
            while(rs.next()) {
                //ArrayList row = new ArrayList();
                //data.add(row);
                
                html_output.append("<tr>");
                if (Checks.compareTo("1") == 0  ) {
                    html_output.append("<td><input type=\"checkbox\" name=\"lista_elementi\" value='" + rs.getString(CampoID) + "'></td>");
                } else {
                    html_output.append("<td></td>");
                }
                
                for(int j=1; j<=col; j++) {
                    // Here is the tricky part which I did not figure yet. For now, I am reading in all as Strings.
                   // row.add(rs.getObject(j).toString());
                    //html_output += "<td>" + rs.getObject(j).toString() + "</td>";
                    if (rs.getString(j).length()>20) {
                        html_output.append("<td  style=\"font-size:9px;\"  onmouseover=\"return overlib('" + rs.getString(j).replace("'", "`").replace("\"","`") + "', CAPTION,'Testo Completo');\" onmouseout=\"return nd();\"><i>" + rs.getString(j).substring(0, 19) + "...</i></td>\n");
                        //abbr=""
                        //html_output.append("<td abbr=\"" + rs.getString(j) + "\"><i>" + rs.getObject(j).toString() + "</I></td>");      
                        //html_output.append("<td abbr=\"" + rs.getString(j) + "\"><i>" + rs.getString(j).substring(0, 19) + "...</i></td>");
                    } else {
                        html_output.append("<td  style=\"font-size:9px;\" >" + rs.getString(j) + "</td>\n");
                    }
                }
                
                //html_output += "<td><a href='" + ModificaURL + rs.getInt(CampoID) + "'> <img src='img/modifica.png' alt='Modifica'> </a></td>";               
                //html_output += "<td>" + "<img src='img/elimina.png' alt='Elimina' onclick='conferma(\"" + rs.getInt(CampoID) +"\")'> </a></td>";
                //html_output += "<td>" + "<img src='img/elimina.png' alt='Elimina' onclick='if (confirm(\"Sei sicuro di voler eliminare il record?\")){window.location = \"" + CancellaURL + rs.getInt(CampoID)+ "\";} else { alert(\"Azione Annullata.\");}'> </a></td>\n";
                html_output.append("<tr>");
            }
            html_output.append("</table><br></fieldset>");
            rs.close();
            stmt.close();
            cn.close();
        } catch (Exception e) {
            html_output.delete(1, html_output.length());
                html_output.append(showError(e));
        }
        return html_output.toString();       
   }
   
   
  
  
  
  public String getExcelListFromQuery (String sql) {
       //String html_output = "<script type=\"text/javascript\">\nfunction conferma(ID) {\nvar answer = confirm(\"Sei sicuro di voler eliminare il record?\");\n if (answer){\nwindow.location = \"" + CancellaURL + "\"+ID;\n} else {\n alert(\"Azione Annullata.\"); \n }\n}\n</script>";
       StringBuffer html_output = new StringBuffer();
       html_output.append("<table class=\"elenchi\" border=1>");
       try {
            Class.forName(DriverString); 
            Connection cn=DriverManager.getConnection(ConnectionString); 
            java.sql.Statement stmt = cn.createStatement();
            //String sql=Query;
            ResultSet rs = stmt.executeQuery(sql);
            
            ResultSetMetaData rsm = rs.getMetaData();
            int col = rsm.getColumnCount();
            //System.out.print(col);
            html_output.append("<tr>");
            for(int i=1; i<=col; i++) {
                //columnNames.add(rsm.getColumnName(i));
                html_output.append("<th><STRONG>" + rsm.getColumnName(i) + "</strong></th>");
                 //System.out.print(rsm.getColumnName(i));
            }
            html_output.append("</tr>");
            // Read the data
            
            while(rs.next()) {
                //ArrayList row = new ArrayList();
                //data.add(row);
                
                html_output.append("<tr>");
                //if (Checks.compareTo("1") == 0  ) {
                //    html_output.append("<td><input type=\"checkbox\" name=\"lista_elementi\" value='" + rs.getString(CampoID) + "'></td>");
                //} else {
                //    html_output.append("<td></td>");
                //}
                
                for(int j=1; j<=col; j++) {
                    // Here is the tricky part which I did not figure yet. For now, I am reading in all as Strings.
                   // row.add(rs.getObject(j).toString());
                    //html_output += "<td>" + rs.getObject(j).toString() + "</td>";
                    //if (rs.getString(j).length()>20) {
                    //    html_output.append("<td  style=\"font-size:9px;\"  onmouseover=\"return overlib('" + rs.getString(j).replace("'", "`").replace("\"","`") + "', CAPTION,'Testo Completo');\" onmouseout=\"return nd();\"><i>" + rs.getString(j).substring(0, 19) + "...</i></td>\n");
                        //abbr=""
                        //html_output.append("<td abbr=\"" + rs.getString(j) + "\"><i>" + rs.getObject(j).toString() + "</I></td>");      
                        //html_output.append("<td abbr=\"" + rs.getString(j) + "\"><i>" + rs.getString(j).substring(0, 19) + "...</i></td>");
                    //} else {
                        html_output.append("<td  style=\"font-size:9px;\" >" + rs.getString(j) + "</td>");
                    //}
                }
                
                //html_output += "<td><a href='" + ModificaURL + rs.getInt(CampoID) + "'> <img src='img/modifica.png' alt='Modifica'> </a></td>";               
                //html_output += "<td>" + "<img src='img/elimina.png' alt='Elimina' onclick='conferma(\"" + rs.getInt(CampoID) +"\")'> </a></td>";
                //html_output += "<td>" + "<img src='img/elimina.png' alt='Elimina' onclick='if (confirm(\"Sei sicuro di voler eliminare il record?\")){window.location = \"" + CancellaURL + rs.getInt(CampoID)+ "\";} else { alert(\"Azione Annullata.\");}'> </a></td>\n";
                html_output.append("<tr>");
            }
            html_output.append("</table>");
            rs.close();
            stmt.close();
            cn.close();
        } catch (Exception e) {
            html_output.delete(1, html_output.length());
                html_output.append(showError(e));
        }
        return html_output.toString();       
   }
  
  
  
   
   public String OptimizeDB() {
       String html_output="<table border=1><tr><td><strong>Operazione</strong></td><td><strong>Esito</strong></td></tr>";
       try {
           
           
           Class.forName(DriverString);
           Connection cn = DriverManager.getConnection (ConnectionString);
           java.sql.Statement stmt = cn.createStatement();      
           java.sql.Statement stmt2 = cn.createStatement();
           
           
           stmt2.executeUpdate("update abbonati set data_registrazione='2000-01-01' where data_registrazione='0000-00-00'");
           stmt2.executeUpdate("update abbonati set data_decorrenza='2000-01-01' where data_decorrenza='0000-00-00'");
           stmt2.executeUpdate("update abbonati set data_scadenza='2000-01-01' where data_scadenza='0000-00-00'");
           html_output += "<tr><td>Normalizzazione Date</td><td>OK</td></tr>";
           stmt2.executeUpdate("update abbonati set cap = concat('000',cap) where length(cap) = 2");
           stmt2.executeUpdate("update abbonati set cap = concat('00',cap) where length(cap) = 3");
           stmt2.executeUpdate("update abbonati set cap = concat('0',cap) where length(cap) = 4");
           html_output += "<tr><td>Normalizzazione CAP</td><td>OK</td></tr>";
           
           stmt2.executeUpdate("update abbonati set id_tipologia=8 where DATEDIFF(CURDATE(), data_scadenza) > 365");
           html_output += "<tr><td>Normalizzati Vecchi Abbonamenti</td><td>OK</td></tr>";
           
           String sql="select * from abbonati where data_registrazione > data_decorrenza";
           ResultSet rs = stmt.executeQuery(sql);
           ResultSet rs2;
           
           int RecordBonificati = 0;
           
           while (rs.next()) {            
               stmt2.executeUpdate("update abbonati set data_decorrenza='" + rs.getDate("data_registrazione") + "', data_registrazione='" + rs.getDate("data_decorrenza") + "' where id_abbonato=" + rs.getInt("id_abbonato"));               
               RecordBonificati++;
           }
           
           //stmt.executeUpdate("update siteoptions set last_optimization='" + new java.util.Date().toString() +  "'");
           //stmt.close();
           
           //rs.close();
           //cn.close();
           
           html_output += "<tr><td>Corretta Data su " + RecordBonificati +" records</td><td>OK</td></tr>";
           
           sql="show tables";
           rs = stmt.executeQuery(sql);
           
           while (rs.next()) {
               
               rs2 = stmt2.executeQuery("optimize table " + rs.getString(1));
               if (rs2.next()) {
                    html_output += "<tr><td>Ott. " + rs2.getString(1) + "</td><td>" + rs2.getString(4) + "</td></tr>";
               }
               rs2.close();
           }
           
           stmt.executeUpdate("update siteoptions set last_optimization='" + new java.util.Date().toString() +  "'");
           stmt.close();
           
           rs.close();
           cn.close();
           
           
       } catch (Exception e) {
                html_output = showError(e);
       }
       html_output += "</table>";
       return html_output;
   }
   
   
   public String BackupDB() {
       String html_output = "";
       
       html_output += DataAccess.db2sql.dumpDB(DriverString, ConnectionString);
      
       try {
           
           
           Class.forName(DriverString);
           Connection cn = DriverManager.getConnection (ConnectionString);
           java.sql.Statement stmt = cn.createStatement();                 
           stmt.executeUpdate("update siteoptions set last_backup='" + new java.util.Date().toString() +  "'");
           stmt.close();
           cn.close();
       } catch (Exception e) {
                html_output = showError(e);
       }
       
       
       
       
       return html_output;
   }
   
   public String getLastOptimization() {
       String html_output="";
       try {
           
           
           Class.forName(DriverString);
           Connection cn = DriverManager.getConnection (ConnectionString);
           java.sql.Statement stmt = cn.createStatement();      
           
           String sql="select last_optimization from siteoptions";

           ResultSet rs = stmt.executeQuery(sql);
           
           
           if (rs.next()) {
               html_output += "<strong>" + rs.getString(1) + "</strong>";
           }
           
           
           stmt.close();
           rs.close();
           
       } catch (Exception e) {
                html_output = showError(e);
       }
       
       return html_output;
   }
   
   
   
   public String getLastBackup() {
       String html_output="";
       try {
           
           
           Class.forName(DriverString);
           Connection cn = DriverManager.getConnection (ConnectionString);
           java.sql.Statement stmt = cn.createStatement();      
           
           String sql="select last_backup from siteoptions";

           ResultSet rs = stmt.executeQuery(sql);
           
           
           if (rs.next()) {
               html_output += "<strong>" + rs.getString(1) + "</strong>";
           }
           
           
           stmt.close();
           rs.close();
           
       } catch (Exception e) {
                html_output = showError(e);
       }
       
       return html_output;
   }
   
   public String getHelp (String id_action) {
       String html_output = "";
       html_output += "<script language=\"JavaScript\" src=\"jscript/overlib_mini_1.js\"></script>\n";
       html_output += "<div id='overDiv1' style='position:absolute; visibility:hidden; z-index:1000;'></div>";
       
       
       
       try {
           
           
           Class.forName(DriverString);
           Connection cn = DriverManager.getConnection (ConnectionString);
           java.sql.Statement stmt = cn.createStatement();      
           
           String sql="select testo from help where id_argomento = '" + id_action + "'";

           ResultSet rs = stmt.executeQuery(sql);
           
           
           if (rs.next()) {
               //html_output += "<strong>" + rs.getString(1) + "</strong>";
               html_output += "<img src='img/help.gif' onmouseover=\"return overlib('" + rs.getString(1).replace("'", "`") + "', LEFT, CAPTION,'Help On-Line');\" onmouseout=\"return nd();\">";
       
           } else {
               html_output += "<img src='img/help.gif' onmouseover=\"return overlib('Help non disponibile', LEFT, CAPTION,'Help On-Line');\" onmouseout=\"return nd();\">";
           }
           
           
           stmt.close();
           rs.close();
           
       } catch (Exception e) {
                html_output = showError(e);
       }
       
       return html_output;
   }
   
   public String showError (Exception e) {
     String html_output = "";
     html_output += "<center><strong>Si e' verificato un errore durante l'operazione!</strong></center><br>\n";
     html_output += "<center>Testo dell'errore</center><br>\n";
     html_output += "<textarea disabled  rows='8' cols='40'>" + e.getMessage() + "</textarea>\n";
     html_output += "<br><br><Strong><a href=\"mailto:" + getProp("tech_supp") + "?subject=Errore%20Gestione%20Abbonamenti&body=***Report Di Errore Gestione Abbonamenti***%0A%0A%0A***Spazio per eventuali note dell'utente***%0A%0A%0A***Non modificare dopo questa riga***%0A%0A%0A*** Dump Richiesta HTTP ***%0A:" + url_richiesta.toString().replace("\n", "%0A").replace("&", " ").replace("?", "_") + "%0A%0A*** Dump Errore ***%0A" + e.toString().replace("\n", "%0A") + "\">Invia errore al supporto tecnico</a></strong>";
     return html_output;
 }
   
   public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertySupport.addPropertyChangeListener(listener);
    }
    
   public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertySupport.removePropertyChangeListener(listener);
    }
    
}
